我可以用m_TreeCtl.GetItemText(m_TreeCtl.GetSelectedItem()) 来获得节点的名称,但是我想知道当前这是第几层节点该用什么方法呢,麻烦高手给个例子。

解决方案 »

  1.   

    HTREEITEM hItem = m_TreeCtl.GetSelectedItem();
    HTREEITEM hParentItem = NULL;
    hParentItem = m_TreeCtl.GetParentItem(hItem)
    DWORD dwItemLayer = 0;
    while(hParentItem)
    {
        hParentItem = m_TreeCtl.GetParentItem(hParentItem)
        ++dwItemLayer;
    }dwItemLayer//最后结果就是第几层  0为root
      

  2.   

    没有,除非你插入的时候用SetItemData()保存层数
    需要的时候用GetItemData()得到
      

  3.   

    dwItemLayer的值怎么看啊 MessageBox()不让打印
      

  4.   

    这个方法好象不行啊,怎么连循环都不走了 呢 我贴上全部的代码来 高手帮忙看看
    //鼠标右键事件
    void CTestTreeDlg::OnRclickTreectl(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here

    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    HTREEITEM hItem = m_TreeCtl.GetSelectedItem();  HTREEITEM hParentItem = NULL;  hParentItem = m_TreeCtl.GetParentItem(hItem);  DWORD  dwItemLayer = 0;  while(hParentItem) 

    hParentItem = m_TreeCtl.GetParentItem(hParentItem); 
    ++dwItemLayer; 
    MessageBox("OK");
    }        CModalDlg ModalDlg;
           ModalDlg.DoModal();       *pResult = 0;
    }