自绘CTreeCtrl树节点名称显示不全的问题

在实际应用中,需要自绘CTreeCtrl,全部使用gdi绘制节点和文字,当节点名称较长时会出现显示不全的问题,拖动到最右边的时候仍然不能显示完全。


自绘CTreeCtrl树节点名称显示不全的问题_第1张图片

 

 

原因是自绘的字体与CTreeCtrl默认的字体不同造成的。

解决方法是向树控件发送WM_SETFONT消息,将默认字体替换为自绘的字体。

 

 

CFont* pOldFont;
CFont newFont;

LOGFONT lf;
ZeroMemory(&lf,sizeof(lf));
lf.lfHeight = 12;
lf.lfWidth = 6;
lf.lfWeight = 100;
_tcscpy(lf.lfFaceName,_T("宋体"));
newFont.CreateFontIndirect(&lf);
pOldFont = tempDC.SelectObject(&newFont);
::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)&newFont, (LPARAM)FALSE);
 

你可能感兴趣的:(显示不全,CTreeCtrl)