MFC tree control 问题
来源:百度知道 编辑:UC知道 时间:2024/06/17 12:49:29
我想右键点击能选择节点。
我在右键点击消息中实现下面的代码。为什么不行呢~请指教
CPoint MyPoint;
m_tree.ScreenToClient(&MyPoint);
UINT uFlags;
HTREEITEM hItem = m_tree.HitTest(MyPoint, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
m_tree.SelectItem(hItem);
我在右键点击消息中实现下面的代码。为什么不行呢~请指教
CPoint MyPoint;
m_tree.ScreenToClient(&MyPoint);
UINT uFlags;
HTREEITEM hItem = m_tree.HitTest(MyPoint, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
m_tree.SelectItem(hItem);
::GetCursorPos( &MyPoint); ;//获得屏幕坐标
放在第二行在转换之前
你需要由CTreeCtrl派生一个新类,比如CTreeCtrlEx
然后响应CTreeCtrlEx的NM_RCLICK消息,在其中添加如下代码
void CTreeCtrlEx::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM hItem = HitTest(pt, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
SelectItem(hItem);
*pResult = 0;
}
最后别忘了将m_tree的类型改为CTreeCtrlEx