首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

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

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;
好的,别忘给分!

热点排行