当标准的CTreeCtrl不能符合我们的使用要求时,通常会对它进行重载,下面列出若干个技巧。
1,使用Vista的风格
#pragma comment(lib,"UxTheme.lib")
::SetWindowTheme(m_hWnd,L"Explorer", NULL);
2,改变checkbox的图标
新建一个CImageList之后,将自己需要的图标添加进去,然后设置一下
this->SetImageList(&m_iStateIconList,TVSIL_STATE);
前提是,CTreeCtrl的属性中有TVS_CHECKBOXES
3,区分checkbox图标点击和文字被点击的方法
注意,如果处理中发生了展开或者收缩的情况的话,hittest有错的时候。
4,更改树显示的背景以及文字颜色
5,遍历修改checkbox的状态
重载SetItemState函数之后,调用下面2个遍历函数。