VC中使用CTreeCtrl 一次展开所有的节点

zhuweiping2003 2008-11-21 10:56:29
VC中使用CTreeCtrl 一次展开所有的节点

CTreeCtrl m_tree;

void CTreetestDlg::Onexpandtree() //展开所有节点
{
// TODO: Add your command handler code here
m_tree.Expand(m_tree.GetRootItem(),TVE_EXPAND);
m_handleTreeItem = m_tree.GetRootItem();
while(m_handleTreeItem)
{
m_handleTreeItem = m_tree.GetChildItem(m_handleTreeItem);
m_tree.Expand(m_handleTreeItem, TVE_EXPAND);
}
}

上面是我的代码 他只能一次展开第一个子节点的所有第一个子项

如何修改 能将其他的兄弟节点的所有节点全部展开啊

望高手指点 最好给出代码 谢谢
...全文
1593 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hankcs 2012-10-24
  • 打赏
  • 举报
回复
这个不错谢谢
heyongfeng71942 2012-10-21
  • 打赏
  • 举报
回复
很好用
我用这个展开了所有的节点
谢谢了
ld631714056 2011-07-19
  • 打赏
  • 举报
回复
恩,学习ing······
工程师WWW 2010-12-25
  • 打赏
  • 举报
回复
分享下,
oakfire 2008-11-21
  • 打赏
  • 举报
回复
哎 为啥不能编辑
void CTreetestDlg::Onexpandtree() //展开所有节点 
{
// TODO: Add your command handler code here
MyExpandTree(m_tree.GetRootItem());

}

void MyExpandTree(HTREEITEM hTreeItem)
{
if(!m_tree.ItemHasChildren(hTreeItem))
{
return;
}
HTREEITEM hNextItem = m_DynTree.GetChildItem(hTreeItem);
while (hNextItem != NULL)
{
MyExpandTree(hNextItem);
hNextItem = m_tree.GetNextItem(hChildItem, TVGN_NEXT);
}
m_tree.Expand(hTreeItem,TVE_EXPAND);
}
oakfire 2008-11-21
  • 打赏
  • 举报
回复
可用递归


void CTreetestDlg::Onexpandtree() //展开所有节点
{
// TODO: Add your command handler code here
MyExpandTree(m_tree.GetRootItem());

}

void MyExpandTree(HTREEITEM hTreeItem)
{
if(!m_tree.ItemHasChildren(hTreeItem))
{
return;
}
HTREEITEM hNextItem = m_DynTree.GetChildItem(hTreeItem);
while (hNextItem != NULL)
{
MyExpandTree(hNextItem);
hNextItem = m_tree.GetNextItem(hChildItem, TVGN_NEXT);
}
m_DynTree.Expand(hTreeItem,TVE_EXPAND);
}
ToperRay 2008-11-21
  • 打赏
  • 举报
回复
遍历,然后Expand
oysoft 2008-11-21
  • 打赏
  • 举报
回复
这只是一个遍历树的问题,看你想怎么遍历了,使用
HTREEITEM GetNextSiblingItem( HTREEITEM hItem );
可以获得同级其他节点
zhuweiping2003 2008-11-21
  • 打赏
  • 举报
回复
4楼的 你的正确。
下面给出我最终的代码吧

class CMenuCreatDlg : public CDialog
中的public:
添加定义 void MyExpandTree(HTREEITEM hTreeItem);



void CMenuCreatDlg::OnMENUITEMexpandtree() //展开所有节点
{
// TODO: Add your command handler code here
MyExpandTree(m_tree.GetRootItem());
}

void CMenuCreatDlg::MyExpandTree(HTREEITEM hTreeItem)
{
if(!m_tree.ItemHasChildren(hTreeItem))
{
return;
}
HTREEITEM hNextItem = m_tree.GetChildItem(hTreeItem);
while (hNextItem != NULL)
{
MyExpandTree(hNextItem);
hNextItem = m_tree.GetNextItem(hNextItem, TVGN_NEXT);
}
m_tree.Expand(hTreeItem,TVE_EXPAND);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧