最近在写程序时需要对树形控件进行查询指定文本的内容,因此写了本函数。
//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;
}