VC右键菜单弹出位置的有关问题
VC右键菜单弹出位置的问题
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);
------解决方案--------------------
子类也可以添加OnContextMenu响应,或者根据窗口位置限制一下Pos
------解决方案--------------------
"当鼠标的左下角位置会让“该菜单显示到屏幕外时”,菜单就不能正常显示了"
判断鼠标位置, 修改 TPM_LEFTALIGN 为:
TPM_RIGHTALIGN
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);
------解决方案--------------------
子类也可以添加OnContextMenu响应,或者根据窗口位置限制一下Pos
------解决方案--------------------
"当鼠标的左下角位置会让“该菜单显示到屏幕外时”,菜单就不能正常显示了"
判断鼠标位置, 修改 TPM_LEFTALIGN 为:
TPM_RIGHTALIGN