CTreeCtl类的使用心得

 

一、从指定节点开始查找LPARAM等于指定值的树节点

思路:

    首先,检查当前节点是否符合要求,是则返回当前节点。

    其次,若当前节点有子节点,则遍历子节点。

    最后,若当前节点有兄弟节点,则遍历兄弟节点。

返回值:若找到符合条件的节点,则返回该节点,否则,返回NULL。

HTREEITEM CDepartmentManageDlg::FindTreeItem(HTREEITEM hItem,LPARAM lParentId)

 HTREEITEM hTreeItem;
 HTREEITEM hChildItem;
 HTREEITEM hSiblingItem;

 // 检查当前节点是否符合要求
 DWORD dwId = dptTree.GetItemData(hItem);
 if (dwId == lParentId)
 {
  return hItem;
 }

 // 搜索当前节点的子节点
 TVITEM item;
 item.mask = TVIF_CHILDREN | TVIF_HANDLE;
 item.hItem = hItem;
 dptTree.GetItem(&item);
 if (item.cChildren == 1) // 等于1说明有子节点
 {
  hChildItem = dptTree.GetNextItem(hItem,TVGN_CHILD);
  if (hChildItem != NULL)
  {
   hTreeItem = FindTreeItem(hChildItem,lParentId);
   if (hTreeItem != NULL)
   {
    return hTreeItem;
   }
  }
 }

 // 搜索兄弟结点
 hSiblingItem = dptTree.GetNextSiblingItem(hItem);
 while(hSiblingItem != NULL)
 {
  hTreeItem = FindTreeItem(hSiblingItem,lParentId);
  if (hTreeItem != NULL)
  {
   return hTreeItem;
  }

  hSiblingItem = dptTree.GetNextSiblingItem(hSiblingItem);
 }

 return NULL;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值