文章目录
最近在使用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
| 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());
|