我想在树型控件的节点上双击时得到此节点的句柄,但不知为什么就时不成功
void CTree::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TVITEM item = pNMTreeView->itemNew;
         *pResult = 0;
}
在这个里面item就是当前的节点。但在下面双击的处理函数中item就不对了。
void CTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TVITEM item = pNMTreeView->itemNew;
*pResult = 0;
}谢谢大侠,如果解决分一定加

解决方案 »

  1.   

    我采用这种方法也不行
    void CTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    POINT  p;
    GetCursorPos(&p);
    CPoint point(p);
    HTREEITEM hitem = m_TreeCtrl->HitTest(point);
    CString str = m_TreeCtrl->GetItemText(hitem);

    *pResult = 0;
    }
      

  2.   

    第二种方法可以,只不过要转为客户区坐标
    void CTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    POINT  p;
    GetCursorPos(&p);
    CPoint point(p);
    //转为客户区坐标
             m_TreeCtrl->ScreenToClient(&point);
    //..........
    HTREEITEM hitem = m_TreeCtrl->HitTest(point);
    CString str = m_TreeCtrl->GetItemText(hitem);

    *pResult = 0;
    }
      

  3.   

    http://www.vckbase.com/document/viewdoc/?id=447class CTreeCtrlDlg : public CDialog
    {
    …………
    public:
    HTREEITEM m_hTreeItem;
    CImageList m_ImgLst;// Dialog Data
    //{{AFX_DATA(CTreeCtrlDlg)
    enum { IDD = IDD_TREECTRL_DIALOG };
    CTreeCtrl m_wndTree;//与对话框中树控件相关联
    //}}AFX_DATA// Implementation
    protected:
    afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);
    …………
    };void CTreeCtrlDlg::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    m_hTreeItem = m_wndTree.GetSelectedItem();
    //以GetItemText()函数为例:
    CString S1 = m_wndTree.GetItemText(m_hTreeItem);
    AfxMessageBox("You have selected "+S1);
    *pResult = 0;
    }