Max*_*Max 3 user-interface mfc visual-studio-2008
(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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它正在工作,但是对于这样一个简单的任务似乎有些过头了。
我想我必须丢失一些显而易见的东西,而不必这样做。
有没有更简单的方法?
谢谢。
除了已经完成的自定义工程图之外,还可以为所有选定项目设置状态TVIS_DROPHILITED。但是我不确定那是否真的是您想要的,尤其是如果您的树控件也是放置目标时。
您还可以尝试将树控件的主题设置为资源管理器:
SetWindowTheme(hTreeControl, L"Explorer", NULL);
Run Code Online (Sandbox Code Playgroud)
这使得树控件看起来与在Windows资源管理器中的颜色完全相同。也许这些更符合您的喜好。
| 归档时间: |
|
| 查看次数: |
8122 次 |
| 最近记录: |