void CDlgCombin::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
HTREEITEM hCurItem = m_TC_Tree.GetSelectedItem();
if ( NULL == hCurItem )
return;
CString strName = m_TC_Tree.GetItemText(hCurItem);
string strItemName = strName.GetBuffer(0); //选择的是子节点,但得到的确是父节点。要双击才能得到子节点。
//怎么判断我得到的节点是父节点还是子节点呢?
}

解决方案 »

  1.   

    父子关系是相对的,如果层次太多,一个节点既可以是父节点也可以是子节点。
    ----------------
    不明白。说需求
    不知道你要干什么,用TVN_SELCHANGED可能更好些
      

  2.   

    是这样的
    -AAA
       aaa
    我点击了aaaa节点
    HTREEITEM hCurItem = m_TC_Tree.GetSelectedItem();
    if ( NULL == hCurItem )
            return;
    CString strName = m_TC_Tree.GetItemText(hCurItem);
    string strItemName = strName.GetBuffer(0); //得到却是父节点的名字AAA
      

  3.   

    解决了
    我用了TVN_SELCHANGED消息响应
    但为什么NM_CLICK会出现那个问题呢?
    他们的区别是什么啊?
      

  4.   

            HTREEITEM hParentItem;//父节点
    hParentItem = tree_proc.GetSelectedItem();

    if(hParentItem == NULL )
    {
    MessageBox("父节点为空,未选!"," 提示");
    return;
    }

    HTREEITEM h_group = tree_proc.GetParentItem(hParentItem);//父节点下的子节点

    if(hParentItem != NULL && h_group == NULL)
    {
    MessageBox("请选择子节点节点!"," 提示");
    return;
    }
      

  5.   

    可以到MSDN的库里面看tree的用法,再详细不过了!
      

  6.   


    说明NM_CLICK消息到来时还没有SelectItem呢。