判断树型控件的选择节点

第一步:在向导中给你的树形控件关联一个CTreeCtrl的变量(就像你代码中的m_Mess)
第二步:在向导中,添加该树形控件的NM_Click消息(就是鼠标单击消息,以下假设函数名为OnClickTree)
第三步:在代码中添加你的数据
    HTREEITEM hRoot = m_ctrlTree.InsertItem("北京");
 m_ctrlTree.SetItemData(hRoot, 1);
 HTREEITEM hChild = m_ctrlTree.InsertItem("朝阳区", hRoot);
 m_ctrlTree.SetItemData(hChild, 2);

 hChild = m_ctrlTree.InsertItem("海淀区", hRoot);
 m_ctrlTree.SetItemData(hChild, 3);
   注意:我在上面用了SetItemData函数,主要是给不同的节点添加不同的标记
,在下面的单击消息函数中就可以看出它的作用

第四步:在OnClickTree函数中添加鼠标单击消息响应代码
         
         CPoint pt = GetCurrentMessage()->pt;   //获取当前鼠标点击消息的坐标点

 m_ctrlTree.ScreenToClient(&pt);   //将鼠标的屏幕坐标,转换成树形控件的客户区坐标

 UINT uFlags = 0;
  
 HTREEITEM hItem = m_ctrlTree.HitTest(pt, &uFlags);//然后做点击测试

 if ((hItem != NULL) && (TVHT_ONITEM & uFlags))//如果点击的位置是在节点位置上面
 {
  m_ctrlTree.SelectItem(hItem);
  //获取开始我们设置的数据,注意这就是我为什么开始要每个节点设置不同的数据的原因。当然,如果你的数据节点比较少,你也可以通过获取节点的文字,如上面设置的"海淀区",然后通过字符串比较来判断点击了哪个节点
  int nDat = m_ctrlTree.GetItemData(hItem); 
 
CString str=m_TreeCtrl.GetItemText(hItem);
//然后根据不同的节点,你完成不同的动作即可 switch (nDat) { case 1: AfxMessageBox("北京"); break; case 2: AfxMessageBox("北京->朝阳区"); break; case 3: AfxMessageBox("北京->海淀区"); break; default: AfxMessageBox("ERROR"); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值