在实际应用中,需要自绘CTreeCtrl,全部使用gdi绘制节点和文字,当节点名称较长时会出现显示不全的问题,拖动到最右边的时候仍然不能显示完全。
原因是自绘的字体与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);