1. 程式人生 > >tree樹形控制元件之迴圈遍歷

tree樹形控制元件之迴圈遍歷

最近在寫程式時需要對樹形控制元件進行查詢指定文字的內容,因此寫了本函式。

//item:待遍歷樹的根節點,strtext:待查詢節點名稱
HTREEITEM  Ctest2Dlg::FindItem(CTreeCtrl &ctrlTree ,HTREEITEM  item, CString strtext) 

 HTREEITEM  hfind;

 //空樹,直接返回NULL
 if(item ==  NULL) 
  return  NULL;

 //遍歷查詢
 while(item!=NULL) 
 { 
  //當前節點即所需查詢節點
  if(ctrlTree.GetItemText(item) == strtext)
   return  item; 


  //查詢當前節點的子節點
  if(ctrlTree.ItemHasChildren(item))
  { 
   item=ctrlTree.GetChildItem(item);
   //遞迴呼叫查詢子節點下節點

   hfind  =  FindItem(ctrlTree,item,strtext); 
   if(hfind) 
   { 
    return  hfind; 
   } 
   else
   {
    //子節點中未發現所需節點,繼續查詢兄弟節點
    item = ctrlTree.GetNextSiblingItem(ctrlTree.GetParentItem(item));
   }
  }else
  { 
   //若無子節點,繼續查詢兄弟節點
   item = ctrlTree.GetNextSiblingItem(item);
  } 
 } 

 return item; 
}