c++中如何遍历treeview控件的所有父节点?

How to iterate through all parent nodes of treeview control in c++?

我是 C++ 新手。有没有办法从树开始遍历所有父节点?

例如:

ParentNode1->Child1
           ->Child2

ParentNode2->Child1
           ->Child2

我想从 ParentNode1 迭代到 ParentNode2。

请多多指教。

CTreeView class wraps a CTreeCtrl object. The latter provides CTreeCtrl::GetNextSiblingItem/CTreeCtrl::GetPrevSiblingItem。这些成员 return next/previous 树视图项目,它们处于同一层次结构级别。


如果您正在寻找 Windows API 解决方案,请使用 TreeView_GetNextSibling/TreeView_GetPrevSibling macros instead, or send a TVM_GETNEXTITEM 消息。

使用如下函数遍历MFCCTreeCtrl:

void TraverseTree(CTreeCtrl* pTreeCtrl)
{
    TraverseTreeBranch(pTreeCtrl, pTreeCtrl->GetRootItem(), TVI_ROOT);
}

void TraverseTreeBranch(CTreeCtrl* pTreeCtrl, HTREEITEM hItem, HTREEITEM hParentItem)
{
    // Do stuff with hItem here

    HTREEITEM hItemTmp = pTreeCtrl->GetChildItem(hItem);
    while(hItemTmp != NULL)
    {
        TraverseTreeBranch(pTreeCtrl, hItemTmp, hNewItem);
        hItemTmp = GetNextSiblingItem(hItemTmp);
    }
}