VC++开发GIS系统(85)遍历CTreeCtrl节点(根据名称查找节点)
发布时间: 2015-12-29
所属分类: VC++开发GIS系统
之前在实现文件显示和隐藏和文件激活时候,开始想用遍历CTreeCtrl的方法,不过后来废弃了。但是在网上找到了一个遍历CTreeCtrl的函数,这里分享一下,需要的可以参考,代码如下(下面的函数主要实现的是根据特定名称查找节点,里面用到了CTreeCtrl的遍历)。
// name - 要查找的节点的名称
// tree - 要查找的Tree
// hRoot -根节点(指定特定节点下的)
HTREEITEM FindItem(const CString& name, CTreeCtrl& tree, HTREEITEM hRoot)
{
// 检查查找的是不是根节点
CString text = tree.GetItemText(hRoot);
if (text.Compare(name) == 0)
return hRoot;
// 获取第一个子节点
HTREEITEM hSub = tree.GetChildItem(hRoot);
// CTreeCtrl的遍历
while (hSub)
{
// 如果是要查找的节点返回
HTREEITEM hFound = FindItem(name, tree, hSub);
if (hFound)
return hFound;
// 如果不是,继续下一个子节点
hSub = tree.GetNextSiblingItem(hSub);
}
// return NULL if nothing was found
return NULL;
}
如果是遍历整个树,可以直接用下面的方法
HTREEITEM CTreeDemoDlg::FindItem(const CString& name, CTreeCtrl& tree)
{
HTREEITEM root = m_tree.GetRootItem();
while(root != NULL)
{
HTREEITEM hFound = FindItem(name, tree, root);
if (hFound)
return hFound;
root = tree.GetNextSiblingItem(root);
}
return NULL;
}
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子