tree樹形控制元件之迴圈遍歷
最近在寫程式時需要對樹形控制元件進行查詢指定文字的內容,因此寫了本函式。
//item:待遍歷樹的根節點,strtext:待查詢節點名稱
HTREEITEM Ctest2Dlg::FindItem(CTreeCtrl &ctrlTree ,HTREEITEM item, CString strtext)
{
HTREEITEM hfind;
//空樹,直接返回NULL
if(item == NULL)
return NULL;
//遍歷查詢
while(item!=NULL)
{
//當前節點即所需查詢節點
if(ctrlTree.GetItemText(item) == strtext)
return item;
//查詢當前節點的子節點
if(ctrlTree.ItemHasChildren(item))
{
item=ctrlTree.GetChildItem(item);
//遞迴呼叫查詢子節點下節點
hfind = FindItem(ctrlTree,item,strtext);
if(hfind)
{
return hfind;
}
else
{
//子節點中未發現所需節點,繼續查詢兄弟節點
item = ctrlTree.GetNextSiblingItem(ctrlTree.GetParentItem(item));
}
}else
{
//若無子節點,繼續查詢兄弟節點
item = ctrlTree.GetNextSiblingItem(item);
}
}
return item;
}