文章目录

最近在使用MFC中的CTreeCtrl控件时,遇到了“一次性展开所有子节点”的需求,原以为实现起来非常简单,实际编写时才发现有一定的困难。采用下面的递归函数方式,实现了上述功能,分享给大家。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//MainFrame其它实现代码
CTreeCtrl m_TreeCtrl;
void MainFrame::ExpandTree(CTreeCtrl* pTreeCtrl, HTREEITEM hItem)
{
HTREEITEM hChild, hNext;
//如果存在,则展开节点
pTreeCtrl->Expand(hItem, TVE_EXPAND);
hChild = pTreeCtrl->GetNextItem(hItem, TVGN_CHILD);
while(hChild)
{
ExpandTree(pTreeCtrl, hChild);
hChild = pTreeCtrl->GetNextItem(hChild, TVGN_NEXT);
}
}
//调用方法
ExpandTree(&m_TreeCtrl, TVI_ROOT);
ExpandTree(&m_TreeCtrl, m_TreeCtrl.GetRootItem());
文章目录