我想在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();
}
}
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();
}
}
用GetItemText判断hittest得到的项的文本,
如果等于"项A"执行A
如果等于"项B"执行B
{
NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;
CTreeCtrl &tTree=this->GetTreeCtrl();
CTreeCtrl*pTree=(CTreeCtrl*)(&tTree);
HTREEITEM hCurSel =pTree->GetNextItem(TVI_ROOT, TVGN_CARET);
...
}