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);
}
}
我是 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);
}
}