【发布时间】:2011-01-08 08:22:45
【问题描述】:
(VS2008,MFC,功能包)
使用 CTreeCtrl,当控件失去焦点时,我需要“更好地”突出显示所选项目。
我的树是使用资源编辑器中的“TVS_SHOWSELALWAYS”选项创建的,但颜色不够明显。
我已经有了通过自定义绘制消息 (NM_CUSTOMDRAW) 更改项目颜色的代码,如下所示:
void MyTree::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
NMTVCUSTOMDRAW *pcd = (NMTVCUSTOMDRAW *)pNMHDR;
switch ( pcd->nmcd.dwDrawStage )
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT :
{
HTREEITEM hItem = (HTREEITEM)pcd->nmcd.dwItemSpec;
if ( this->IsSelected(hItem ))
{
pcd->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);
pcd->clrTextBk = GetSysColor(COLOR_HIGHLIGHT);
}
*pResult = CDRF_DODEFAULT;// do not set *pResult = CDRF_SKIPDEFAULT
break;
}
}
}
它正在工作,但对于这样一个简单的任务来说似乎有点过头了。
我认为我必须遗漏一些明显的东西才能做到这一点而不必这样做。
还有更简单的吗?
谢谢。
【问题讨论】:
标签: visual-studio-2008 user-interface mfc