类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
如题
网友回答:
如果你的树中节点名称有重复的话,好像是没有办法找到你想要的那个节点的。
如果没有重复的话,那么可以做个递归函数,从根节点开始,遍历所有的子节点,查找节点名称是否是你需要的。否则查找下一个兄弟节点即可。
从parent开始查找名为name的子节点
HTREEITEM CDlgFenlei::FindNode(HTREEITEM parent,const char *name)
{
HTREEITEM child;
if(parent==TVI_ROOT)
child=m_Fenlei.GetRootItem();
else
child=m_Fenlei.GetChildItem(parent);
CString text;
HTREEITEM item;
while(child!=NULL){
text=m_Fenlei.GetItemText(child);
if(text==name)return child;
item=FindNode(child,name);
if(item!=NULL)return item;
child=m_Fenlei.GetNextSiblingItem(child);
}
return NULL;
}
展开节点
m_Fenlei.Expand(curNode,TVE_EXPAND);
如果不按节点名称查,可以用关联的数据查
还是用递归,再用GetItemData()比较就行