listbox的中OnMeasureItem计算文本的高度出现有关问题,SetFont 还是 GetTextMetrics

listbox的中OnMeasureItem计算文本的高度出现问题,SetFont 还是 GetTextMetrics
自绘一个listbox   使其支持多行显示

开始SetFont   一个字体
然后在   OnMeasureItem   中   计算文本的高度
但在这里   GetTextMetrics   得到的文字高度和设置的字体不一致
通过
DrawText(   ......,DT_WORDBREAK   |   DT_CALCRECT   );
得到的大小也是默认字体的合适大小
就是说   不用   setfont   就能正常显示  
用   setfont   设置一个大号的字体后
就显示不全了

如何让drawtext   通过不同的font计算不同的大小

------解决方案--------------------
在SetOnSetFont中
LRESULT res = Default();

CRect rc;
GetWindowRect( &rc );

WINDOWPOS wp;
wp.hwnd = m_hWnd;
wp.cx = rc.Width();
wp.cy = rc.Height();
wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;
SendMessage( WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp );

return res;
在MeasureItem中,
LOGFONT lf;
GetFont()-> GetLogFont( &lf );

if( lf.lfHeight < 0 )
lpMeasureItemStruct-> itemHeight = -lf.lfHeight;
else
lpMeasureItemStruct-> itemHeight = lf.lfHeight;
好的,别忘给分!