首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  界面/窗口  |  树型控件   


递归查找TreeCtrl所有节点


原作者:不详    源出处:CSDN    发布者:施昌权    发布类型:转载    发布日期:2008-10-13

              

// 根据lpszText查找所给定根的所有项
HTREEITEM CMyTreeCtrl::FindItem(HTREEITEM hRoot, LPSTR lpszText)
{
  //如果hRoot = NULL,指定hRoot为Tree的根
  if (hRoot == NULL)
   hRoot = GetRootItem();

 //如果hRoot = NULL,返回NULL
  if (hRoot == NULL)
   return NULL;

 //判断hRoot是否符合条件,如果符合,返回hRoot
  if (GetItemText(hRoot).Compare(lpszText) == 0)
   return hRoot;
 
  //如果hRoot没有子节点,返回NULL
  if (ItemHasChildren(hRoot) == FALSE)
   return NULL;

 //递归查找hRoot的所有子节点
  HTREEITEM hRes = NULL;
  HTREEITEM hItem = GetChildItem(hRoot);
  while (hItem)
  {
   hRes = FindItem(hItem, lpszText); //查以hItem为根的枝
   if (hRes != NULL)     //如果在以hItem为根的枝里找到,返回结果
    return hRes;
   else        //否则,查找与hItem同级的下一个枝
    hItem = GetNextSiblingItem(hItem);
  } // end of while(hItem != NULL, has next item)
 
  return NULL; 
}

// 根据dwData查找所给定根的所有项

HTREEITEM CMyTreeCtrl::FindItem(HTREEITEM hRoot, DWORD dwData)
{
  //如果hRoot = NULL,指定hRoot为Tree的根
  if (hRoot == NULL)
   hRoot = GetRootItem();

 //如果hRoot = NULL,返回NULL
  if (hRoot == NULL)
   return NULL;

 //判断hRoot是否符合条件,如果符合,返回hRoot
  if (GetItemData(hRoot) == dwData)
   return hRoot;
 
  //如果hRoot没有子节点,返回NULL
  if (ItemHasChildren(hRoot) == FALSE)
   return NULL;

 //递归查找hRoot的所有子节点
  HTREEITEM hRes = NULL;
  HTREEITEM hItem = GetChildItem(hRoot);
  while (hItem)
  {
   hRes = FindItem(hItem, dwData); //查以hItem为根的枝
   if (hRes != NULL)    //如果在以hItem为根的枝里找到,返回结果
    return hRes;
   else       //否则,查找与hItem同级的下一个枝
    hItem = GetNextSiblingItem(hItem);
  } // end of while(hItem != NULL, has next item)
 
  return NULL;


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号