【发布时间】:2015-09-18 15:15:39
【问题描述】:
我是 C++ 新手。有没有办法从树开始遍历所有父节点?
例如:
ParentNode1->Child1
->Child2
ParentNode2->Child1
->Child2
我想从 ParentNode1 迭代到 ParentNode2。
请推荐。
【问题讨论】:
我是 C++ 新手。有没有办法从树开始遍历所有父节点?
例如:
ParentNode1->Child1
->Child2
ParentNode2->Child1
->Child2
我想从 ParentNode1 迭代到 ParentNode2。
请推荐。
【问题讨论】:
使用以下函数遍历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);
}
}
【讨论】:
TraverseSiblings 函数,它会得到一个更好的答案。
CTreeView 类包装了一个 CTreeCtrl 对象。后者提供CTreeCtrl::GetNextSiblingItem/CTreeCtrl::GetPrevSiblingItem。这些成员返回下一个/上一个树视图项,它位于同一层次结构级别。
【讨论】: