树形控件想实现 单击其中节点做出针对性的反应(比如AfxMessageBox(点击节点的文字内容))
但用下面代码中未注释部分 每次提示都是上次点击的节点
用注释掉的部分(在CSDN找到的解答) 提示的内容为空(其实hItem为空)
请问到底应该怎么编写这个响应函数?谢谢!(我是在VS2005中做的程序)
void myCarRecordDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
//TODO: 在此添加控件通知处理程序代码
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TVITEM item = pNMTreeView-> itemNew;
HTREEITEM CurItem=myTreeCtrl.GetSelectedItem();
AfxMessageBox(myTreeCtrl.GetItemText(CurItem/*item.hItem*/)); //CPoint point;
//ScreenToClient(&point);
//// Get the HTREEITEM of the drop target and exit now if it's NULL.
//UINT nFlags;
//HTREEITEM hItem = myTreeCtrl.HitTest (point,&nFlags);
////if (hItem == NULL)
//// return;
//AfxMessageBox(myTreeCtrl.GetItemText(hItem));
*pResult = 0;
}
但用下面代码中未注释部分 每次提示都是上次点击的节点
用注释掉的部分(在CSDN找到的解答) 提示的内容为空(其实hItem为空)
请问到底应该怎么编写这个响应函数?谢谢!(我是在VS2005中做的程序)
void myCarRecordDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
//TODO: 在此添加控件通知处理程序代码
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
TVITEM item = pNMTreeView-> itemNew;
HTREEITEM CurItem=myTreeCtrl.GetSelectedItem();
AfxMessageBox(myTreeCtrl.GetItemText(CurItem/*item.hItem*/)); //CPoint point;
//ScreenToClient(&point);
//// Get the HTREEITEM of the drop target and exit now if it's NULL.
//UINT nFlags;
//HTREEITEM hItem = myTreeCtrl.HitTest (point,&nFlags);
////if (hItem == NULL)
//// return;
//AfxMessageBox(myTreeCtrl.GetItemText(hItem));
*pResult = 0;
}
::ScreenToClient(myTreeCtrl->hWnd,&point);
//// Get the HTREEITEM of the drop target and exit now if it's NULL.
UINT nFlags;
HTREEITEM hItem = myTreeCtrl.HitTest (point,&nFlags);
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); AfxMessageBox(myTreeCtrl.GetItemText(pNMTreeView->itemNew.hItem)); *pResult = 0;
}
GetCursorPos(&point); 获取鼠标点击的位置...
ScreenToClient(&point);
UINT nFlags;
HTREEITEM hItem = myTreeCtrl.HitTest(point,&nFlags);
if (hItem == NULL)
return; AfxMessageBox(myTreeCtrl.GetItemText(hItem));
GetCursorPos(&point); 获取鼠标点击的位置...
myTreeCtrl.ScreenToClient(&point); 转换为树控件位置...
UINT nFlags;
HTREEITEM hItem = myTreeCtrl.HitTest(point,&nFlags);
if (hItem == NULL)
return; AfxMessageBox(myTreeCtrl.GetItemText(hItem));
下步改成 TVN 的谢谢各位了 一会给分
可用代码:
CPoint point;
GetCursorPos(&point);
myTreeCtrl.ScreenToClient(&point);
// Get the HTREEITEM of the drop target and exit now if it's NULL.
UINT nFlags;
HTREEITEM hItem = myTreeCtrl.HitTest (point,&nFlags);
if (hItem == NULL)
return;
AfxMessageBox(myTreeCtrl.GetItemText(hItem));
*pResult = 0;