麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(85)遍历CTreeCtrl节点(根据名称查找节点)

之前在实现文件显示和隐藏文件激活时候,开始想用遍历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;
}

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)