我想通过左击树状控件,获得它的节点. 我试了如下代码,还是不行,很是郁闷,望有高人指点一二.void CDeviceMapView::OnNMClickTreeDevice(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CPoint myPoint;
DWORD count = 0;
GetCursorPos(&myPoint);
ScreenToClient(&myPoint);
UINT uFlags;
HTREEITEM hItem = m_device.HitTest(myPoint, &uFlags); if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
m_device.Select(hItem, TVGN_CARET);
}
*pResult = 0;
}hItem 总是0x00000000,但我确实点中了节点
{
// TODO: 在此添加控件通知处理程序代码
CPoint myPoint;
DWORD count = 0;
GetCursorPos(&myPoint);
ScreenToClient(&myPoint);
UINT uFlags;
HTREEITEM hItem = m_device.HitTest(myPoint, &uFlags); if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
m_device.Select(hItem, TVGN_CARET);
}
*pResult = 0;
}hItem 总是0x00000000,但我确实点中了节点
m_device.ScreenToClient
m_treeDevList.ScreenToClient(&myPoint); UINT uFlags;
HTREEITEM hItem = m_treeDevList.HitTest(myPoint, &uFlags);
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_treeDevList.ScreenToClient(&point);
UINT uFlags;
HTREEITEM hItem = m_treeDevList.HitTest(myPoint, &uFlags);
{
// if Shift-F10
if (ptMousePos.x == -1 && ptMousePos.y == -1)
ptMousePos = (CPoint) GetMessagePos(); ScreenToClient(&ptMousePos); UINT uFlags;
HTREEITEM htItem;
htItem = HitTest( ptMousePos, &uFlags ); if( htItem == NULL )
return;
m_hActiveItem = htItem; CMenu menu;
CMenu* pPopup; // the font popup is stored in a resource
menu.LoadMenu(IDR_TREEITEM_CONTEXTMENU);
pPopup = menu.GetSubMenu(0);
ClientToScreen(&ptMousePos);
pPopup->TrackPopupMenu( TPM_LEFTALIGN, ptMousePos.x, ptMousePos.y, this );
}
extern CTreeCtrl* pmyTreeCtrl;
// The point to test.
extern CPoint myPoint;// Select the item that is at the point myPoint.
UINT uFlags;
HTREEITEM hItem = pmyTreeCtrl->HitTest(myPoint, &uFlags);if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
pmyTreeCtrl->Select(hItem, TVGN_CARET);
}以上是msdn中的例子
你的m_device是树控件吗?
调试中检测一下是否有值呢?