我想在CTreeView中双击项A有一种动作如显示对话框,双击项b有另一项动作,如显示另一个视图,我是这么做的,但每次结果只能显示对话框,如何判断选中的是不同的项,请大家帮帮我吧 ,!
void CLeftView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;
  
CTreeCtrl &tTree=this->GetTreeCtrl();
CTreeCtrl*pTree=(CTreeCtrl*)(&tTree); CPoint pt;
GetCursorPos(&pt);//鼠标当前坐标

//(::GetMessagePos());
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM htItem=pTree->HitTest(pt,&uFlags);
if((htItem!=NULL)&&(uFlags&TVHT_ONITEM))
{
CDataInputDlg  dlg;
    dlg.DoModal();
}

}

  
   

   

解决方案 »

  1.   

    比如说有"项A"和"项B"
    用GetItemText判断hittest得到的项的文本,
    如果等于"项A"执行A
    如果等于"项B"执行B
      

  2.   

    void CLeftView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;
      
    CTreeCtrl &tTree=this->GetTreeCtrl();
    CTreeCtrl*pTree=(CTreeCtrl*)(&tTree);
             HTREEITEM hCurSel =pTree->GetNextItem(TVI_ROOT, TVGN_CARET);
    ...
    }
      

  3.   

    你已经得到当前的HTREEITEM ,要获得项的文本也很容易,或则用GetItemData获得你预先指定的数据都可以。