CTreeCtrl展开、收起子节点下所有的节点

转载自:http://blog.csdn.net/zmaojun/article/details/4006681


1.展开所有子节点

[cpp] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. void ExpandTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)  
  2. {  
  3.     HTREEITEM hChild,hNext,hParent;  
  4.   
  5.     if((!hItem)||(!pTreeCtrl))  
  6.         return;  
  7.     //存在则展开节点  
  8.     pTreeCtrl->Expand(hItem,TVE_EXPAND);  
  9.   
  10.     hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);  
  11.     if(hChild)  
  12.     {//如果有子节点,展开子节点  
  13.         ExpandTree(pTreeCtrl,hChild);  
  14.     }  
  15.     else  
  16.     {//没有子节点,寻找其兄弟节点  
  17.         hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);  
  18.         if(hNext)  
  19.         {//存在兄弟节点  
  20.             ExpandTree(pTreeCtrl,hNext);    
  21.         }  
  22.         else  
  23.         {//不存在兄弟节点,继续找父节点  
  24.             hParent = pTreeCtrl->GetParentItem(hItem);  
  25.             hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);  
  26.             if(hNext)  
  27.                 ExpandTree(pTreeCtrl,hNext);  
  28.         }  
  29.     }  
  30. }  
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.收起所有子节点

[cpp] view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. void CollapseTree(CTreeCtrl* pTreeCtrl,HTREEITEM hItem)  
  2. {  
  3.     HTREEITEM hChild,hNext,hParent;  
  4.   
  5.     if((!hItem)||(!pTreeCtrl))  
  6.         return;  
  7.     //存在则收起节点  
  8.     pTreeCtrl->Expand(hItem,TVE_COLLAPSE);  
  9.   
  10.     hChild = pTreeCtrl->GetNextItem(hItem,TVGN_CHILD);  
  11.     if(hChild)  
  12.     {//如果有子节点,收起子节点  
  13.         CollapseTree(pTreeCtrl,hChild);  
  14.     }  
  15.     else  
  16.     {//没有子节点,寻找其兄弟节点  
  17.         hNext = pTreeCtrl->GetNextItem(hItem,TVGN_NEXT);  
  18.         if(hNext)  
  19.         {//存在兄弟节点  
  20.             CollapseTree(pTreeCtrl,hNext);    
  21.         }  
  22.         else  
  23.         {//不存在兄弟节点,继续找父节点  
  24.             hParent = pTreeCtrl->GetParentItem(hItem);  
  25.             hNext = pTreeCtrl->GetNextItem(hParent,TVGN_NEXT);  
  26.             if(hNext)  
  27.                 CollapseTree(pTreeCtrl,hNext);  
  28.         }  
  29.     }  
  30. }  
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);}}
}



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部