读书人

关于CTreeView右键弹出菜单的一些疑惑

发布时间: 2012-02-16 21:30:36 作者: rapoo

关于CTreeView右键弹出菜单的一些疑惑?
afx_msg void DriveTreeView::OnRButtonUp(UINT nFlags, CPoint point)
{
CMenu menu;
GetCursorPos(&point);

if(!menu.LoadMenuA(IDR_MENU2))
return;
CMenu* pSubMenu = menu.GetSubMenu(0);
if(!pSubMenu)
return;
ClientToScreen(&point);

TrackPopupMenu(pSubMenu->m_hMenu,0,point.x,point.y,0,m_hWnd,NULL);
ScreenToClient(&point);

CTreeView::OnRButtonUp(nFlags, point);
//return afx_msg void();
}
本来打算在树状视图里右键弹出菜单的,但不报错,功能也不能实现,请好心人指点!谢谢!

[解决办法]
ScreenToClient(&point);
为什么还要把屏幕坐标转化到客户区坐标,去掉后试试。
[解决办法]
TrackPopupMenu 需要的是屏幕的坐标, CTreeView::OnRButtonUp需要的是树控件的坐标,所要要转换回来,否则计算单击的位置就不对了

读书人网 >C++

热点推荐