CTreeCtrl展开、收起子节点下所有的节点
来源:互联网 发布:matlab列向量变成矩阵 编辑:程序博客网 时间:2024/05/18 01:25
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);
}
}
}
- CTreeCtrl展开、收起子节点下所有的节点
- CTreeCtrl展开、收起子节点下所有的节点
- CTreeCtrl展开、收起子节点下所有的节点
- Ztree 展开某节点下的所有的子节点
- CTreeCtrl展开树形所有节点
- sql 查找节点下的所有子节点,查找节点的所有父节点
- 通用获取父节点/子节点/子节点下所有节点ID的存储过程
- 通用获取父节点/子节点/子节点下所有节点ID的存储过程
- flex 中展开所有子节点
- 让 CtreeCtrl 的节点在没有子节点的情况下显示+号按钮
- treeview展开所有子节点和孙节点
- 删除父节点下的所有子节点
- Oracle 递归统计所有节点下的子节点个数
- 删除父节点下的所有子节点
- oracle查询某节点下的所有子节点
- ztree递归查询某节点下的所有子节点
- 删除CTreeCtrl中某个节点的子节点
- 后台如何获取所有选中的子节点或者不同父节点下的子节点
- 如何查看自己的DirectX型号
- 2009-03-20:怎样获得DBGrid各列的合计值?
- C#调用C++程序编写的dll
- (转)SQL 语句中特殊字符的处理及预防sql 注射
- 类似微软IP输入框的实例
- CTreeCtrl展开、收起子节点下所有的节点
- 如何在CPNTools中实现循环
- C语言例题8:
- DBHelper
- 80后转
- ASP.NET 2.0的页面指令集
- Windows mobile 下读取手机SIM卡信息(IMEI类)
- English
- 基于事件的NIO多线程服务器