VC右键菜单弹出位置的问题

AIT-CAM 2014-03-29 03:33:18
SDI程序中有右键菜单,一般情况下能正常弹出,但当鼠标位置在一些边角位置时,右键菜单就无法正常弹出显示了,经测试似乎是弹出菜单的位置一直以鼠标位置为左上角,当鼠标的左下角位置会让“该菜单显示到屏幕外时”,菜单就不能正常显示了。尝试调整TrackPopupMenu的第一个参数组合也没搞定。不知道该如何改进,或是当出现此类情况下,菜单能自动改变显示的位置?
(该右键菜单的弹出并不是在OnContextMenu中进行的响应,而是在view类的一个内部子类中进行的响应),代码如下,求解答:

CMenu zooMenu;
zooMenu.LoadMenu(IDR_MENU_GraphEdit);
CMenu *pPopup=zooMenu.GetSubMenu(0);
POINT pos;
GetCursorPos(&pos);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON , pos.x,pos.y,this);
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-03-30
  • 打赏
  • 举报
回复
"当鼠标的左下角位置会让“该菜单显示到屏幕外时”,菜单就不能正常显示了" 判断鼠标位置, 修改 TPM_LEFTALIGN 为: TPM_RIGHTALIGN
zgl7903 2014-03-30
  • 打赏
  • 举报
回复
子类也可以添加OnContextMenu响应,或者根据窗口位置限制一下Pos

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧