天天看点

MFC TreeCtrl 控件(二):显示特性设置 颜色、图标、完全展开

    MFC 的 TreeCtrl 树形控件提供了设置背景色、文本色及线条色的接口,另外,通过递归查找,还可设置指定节点的图标和完整展开节点。在对话框初始化函数中额外添加代码:

m_userTreeCtrl.SetTextColor(RGB(0,0,220));//设置tree的背景色*/	
	m_userTreeCtrl.SetBkColor(RGB(230,230,230));//设置tree的背景色*/
	// 设置TreeCtrl线条颜色
	m_userTreeCtrl.SetLineColor(RGB(0, 150, 220));
	ExpandAllNode(m_userTreeCtrl.GetRootItem(), m_userTreeCtrl); // 展开所有节点
	// 载入图标,设置指定名称的节点的图标
	HICON hIconOther = theApp.LoadIcon(IDI_VIDEO);
	m_imageList.Add(hIconOther);
	SetTreeNodeIcon(m_userTreeCtrl.GetRootItem(), m_userTreeCtrl, _T("测试用户13"));
           

     其中的两个函数为:

void COnsitevideoDlg::SetTreeNodeIcon(HTREEITEM hStartItem, CTreeCtrl& treeCtrl, CString csNodeName)
{
	HTREEITEM hChild = treeCtrl.GetChildItem(hStartItem);
	while(hChild)
	{
		if(csNodeName == treeCtrl.GetItemText(hChild))
		{
			treeCtrl.SetItemImage(hChild, 3, 3);
			return ;
		} else  {
			SetTreeNodeIcon(hChild, treeCtrl, csNodeName);
			hChild = treeCtrl.GetNextSiblingItem(hChild);
		}
	}
}


void COnsitevideoDlg::ExpandAllNode(HTREEITEM hItem, CTreeCtrl& treeShow)
{
	HTREEITEM hChild = treeShow.GetChildItem(hItem);
	while(hChild)
	{
		treeShow.Expand(hItem, TVE_EXPAND);
		ExpandAllNode(hChild, treeShow);
		hChild = treeShow.GetNextSiblingItem(hChild);
	}
}
           

    效果截图如下:

MFC TreeCtrl 控件(二):显示特性设置 颜色、图标、完全展开