CTreeCtrl展开、收起子节点下所有的节点
2009-03-20 10:15
369 查看
1.展开所有子节点
void ExpandTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)
{
HTREEITEM hChild,hNext,hParent;
if((!hItem)||(!pTreeCtrl))
return;
//存在则展开节点
pTreeCtrl->Expand(hItem,TVE_EXPAND);
hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);
if(hChild)
{//如果有子节点,展开子节点
ExpandTree(pTreeCtrl,hChild);
}
else
{//没有子节点,寻找其兄弟节点
hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);
if(hNext)
{//存在兄弟节点
ExpandTree(pTreeCtrl,hNext);
}
else
{//不存在兄弟节点,继续找父节点
hParent = pTreeCtrl->GetParentItem(hItem);
hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);
if(hNext)
ExpandTree(pTreeCtrl,hNext);
}
}
}
2.收起所有子节点
void CollapseTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)
{
HTREEITEM hChild,hNext,hParent;
if((!hItem)||(!pTreeCtrl))
return;
//存在则收起节点
pTreeCtrl->Expand(hItem,TVE_COLLAPSE);
hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);
if(hChild)
{//如果有子节点,收起子节点
CollapseTree(pTreeCtrl,hChild);
}
else
{//没有子节点,寻找其兄弟节点
hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);
if(hNext)
{//存在兄弟节点
CollapseTree(pTreeCtrl,hNext);
}
else
{//不存在兄弟节点,继续找父节点
hParent = pTreeCtrl->GetParentItem(hItem);
hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);
if(hNext)
CollapseTree(pTreeCtrl,hNext);
}
}
}
void ExpandTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)
{
HTREEITEM hChild,hNext,hParent;
if((!hItem)||(!pTreeCtrl))
return;
//存在则展开节点
pTreeCtrl->Expand(hItem,TVE_EXPAND);
hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);
if(hChild)
{//如果有子节点,展开子节点
ExpandTree(pTreeCtrl,hChild);
}
else
{//没有子节点,寻找其兄弟节点
hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);
if(hNext)
{//存在兄弟节点
ExpandTree(pTreeCtrl,hNext);
}
else
{//不存在兄弟节点,继续找父节点
hParent = pTreeCtrl->GetParentItem(hItem);
hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);
if(hNext)
ExpandTree(pTreeCtrl,hNext);
}
}
}
2.收起所有子节点
void CollapseTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)
{
HTREEITEM hChild,hNext,hParent;
if((!hItem)||(!pTreeCtrl))
return;
//存在则收起节点
pTreeCtrl->Expand(hItem,TVE_COLLAPSE);
hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);
if(hChild)
{//如果有子节点,收起子节点
CollapseTree(pTreeCtrl,hChild);
}
else
{//没有子节点,寻找其兄弟节点
hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);
if(hNext)
{//存在兄弟节点
CollapseTree(pTreeCtrl,hNext);
}
else
{//不存在兄弟节点,继续找父节点
hParent = pTreeCtrl->GetParentItem(hItem);
hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);
if(hNext)
CollapseTree(pTreeCtrl,hNext);
}
}
}
相关文章推荐
- CTreeCtrl展开、收起子节点下所有的节点
- CTreeCtrl展开树形所有节点
- WPF中展开一个TreeView控件的所有树节点——出自《IT168》
- angular ztree 梯形结构json配置、点击节点事件、默认展开所有
- delphi中怎样展开和关闭TreeView的所有节点
- mfc中怎样判断CTreeCtrl 的节点是否展开
- jstree 默认展开所有节点方法
- CListCtrl展开所有节点
- Flex tree 双击展开收起节点,更改图标设置
- TreeView默认展开所有节点
- WPF如何展开所有TreeView树节点?
- WPF中展开一个TreeView控件的所有树节点
- CtreeCtrl节点展开关闭切换图标
- WPF中展开一个TreeView控件的所有树节点
- WPF中展开一个TreeView控件的所有树节点
- 展开树形控件atv第ai_s到ai_e层得节点,其他层得节点收起
- 展开或折叠TreeCtrl的所有节点
- WPF TreeView 展开和闭合所有节点
- MFC中CTreeCtrl展开树形列表节点
- FLEX中Tree默认展开所有节点