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