响应Dblclk消息,我要判断选中的是CTreeCtrl中被选中的是哪个节点,之前我是用m_hTreeItem=m_tree.GetSelectedItem()获得被选中节点的句柄,然后用m_tree.GetItemText(m_hTreeItem)获得该节点的文字,通过文字的不同知道点击的是哪个节点。
现在的问题是我在不同的一级节点下有名字相同的二级节点,这样我就不能根据节点文字的不同区分到底点击的是哪个节点了?
该怎么处理这个问题?

解决方案 »

  1.   

    m_tree.GetSelectedItem();不就得到了你点击的是那个节点了吗?
    为什么还要再用m_tree.GetItemText(m_hTreeItem)获得该节点的文字,通过文字的不同知道点击的是哪个节点????
      

  2.   

    m_tree.GetSelectedItem()获得的是句柄,我创建节点的时候对节点的HTREEITEM并没有保存,是用下面这种格式依次覆盖上次的节点句柄的。
             hSubItem2 = m_tree.InsertItem("节点1",1,1,hSubItem1,hSubItem2);
    hSubItem2 = m_tree.InsertItem("节点2",1,1,hSubItem1,hSubItem2);
    换句话说hSubItem2只保留了最后一个创建的节点的句柄。
    怎么办?
      

  3.   

    用SetItemData把相应的节点句柄保存起来
      

  4.   

    VisualEleven,可能我没有理解你的意思,我只想通过一种比较简单的方式判断我选中的是哪个节点,而我又不知道创建节点的时候这个节点的句柄是什么(因为我没有保存),所以我不能通过光靠GetSelectedItem这个函数得到句柄就能判断节点。
    不过现在问题已经解决了,我用了个比较笨的办法,用这函数m_tree.GetItemText(m_tree.GetParentItem(m_tree.GetSelectedItem())得到父句柄的文字,然后再结合父句柄判断当前节点是什么。