如何在c++中遍历treeview控件的所有父节点
How to iterate through all parent nodes of treeview control in c++?
我是c++新手。有没有办法从树开始遍历所有父节点?
示例:
ParentNode1->Child1
->Child2
ParentNode2->Child1
->Child2
我想从ParentNode1迭代到ParentNode2。
请建议。
使用以下函数遍历MFC CTreeCtrl
:
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);
}
}
CTreeView类包装了一个CTreeCtrl对象。后者提供了CTreeCtrl::GetNextSiblingItem/CTreeCtrl::GetPrevSiblingItem。那些成员返回下一个/上一个树视图项目,它们在相同的层次结构级别上。
如果你正在寻找一个Windows API的解决方案,使用TreeView_GetNextSibling/TreeView_GetPrevSibling宏代替,或发送一个TVM_GETNEXTITEM消息。
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 在编译时,C++项目抛出错误 C2228,这是预期的,因为控件在运行时未达到该点
- 如何更改窗体上所有控件的标题?[C++生成器]
- 双击更改 mfc 中列表控件中的行的颜色
- 派生的 wxPanel 控件如何访问其中包含 wxDialog 中的数据?
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- 如何在MFC中的静态文本控件上插入图标?
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 如何在Qt C++中向自定义控件添加属性?
- C/C++ 检测双击 TVItem 的常用控件
- 从C++标头中导入常量而不是硬编码它们:扩展 .net 控件?
- 控件不会在选择函数旁边移动
- MFC:我们能否扩展CEditView中存在的CEdit控件类行为
- 通过嵌入式 IWebBrowser2 控件中的链接打开 youtube 搜索失败
- 如何通知父 CDialog 子 CWnd 已更新,以便另一个子控件可以更新作为响应
- 如何在c++中遍历treeview控件的所有父节点
- 只接收父消息的子类控件
- 使用父窗口的控件打开新窗口
- 当控件的父窗口被销毁时,是否有必要显式恢复控件字体?