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);
}
}
效果截圖如下: