最近在项目中遇到一个问题,就是要设置Tree Control控件中节点的背景色和节点文字的颜色。在网上找了很多资料,发现最常用的方式是响应控件的NM_CUSTOMDRAW消息。具体的实现步骤如下:
1、在VS里面新建一个MFC对话框的工程名为“TestTreeControl”,删除默认添加的静态文本框。然后在工具箱中拖入一个Tree Control控件和一个Button控件,调整控件的位置和大小。
2、修改树控件的ID为IDC_TREEVIEW,按钮的ID为IDC_ADDNODE,Caption属性为Add Node。
3、给树控件添加一个关联的变量m_treeCtrl 类型为CTreeCtrl。(vs中添加方法:选中控件点击右键,在弹出的菜单中选择“添加变量”,弹出添加变量对话框,默认是添加控件变量,类别为Control,给变量取一个名字然后点击“确定”按钮)。
4、 双击“Add Node”按钮跳转到按钮的点击事件函数,在这里添加加入节点到树控件的代码。如下所示:
void CTestTreeControlDlg::OnBnClickedAddnode()
{
// TODO: 在此添加控件通知处理程序代码
CString strText=_T("");
HTREEITEM hRoot;
hRoot = m_treeCtrl.InsertItem(_T("根节点"));//插入树根
TV_INSERTSTRUCT tcItem;//插入数据项数据结构
tcItem.hParent=hRoot;//增加根项
tcItem.hInsertAfter=TVI_LAST;//在最后项之后
tcItem.item.mask=TVIF_TEXT|TVI