弹出菜单的位置总不对
编号:QA001233
建立日期: 1999年6月23日 最后修改日期:1999年6月23日
所属类别:
Jecky:
VC++6
Win98(中文版)
在一个文档视窗的程序中,映射了OnRButtonDown函数,加入如下代码:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
//IDR_MENU1已定义;
menu.GetSubMenu(0)->
TrackPopup(TPM_LEFTALIGIN|
TPM_RIGHTBUTTON,point.x,
point.y,this);
但是,当在视图内点击右键时,快捷菜单的弹出位置,在光标的左上角,而不是光标处。这是什么原因?
回答:
TrackPopupMenu使用的是屏幕坐标,而OnRButtonDown函数得到的point是当前窗口客户区坐标系的,你需要将点的坐标进行一下转换,下面是正确的例子:
CMenu menu;
menu.LoadMenu(IDR_MENU1);
//IDR_MENU1已定义;
CPoint p2 = point;
ClientToScreen(&p2);
menu.GetSubMenu(0)->
TrackPopupMenu(TPM_LEFTALIGN|
TPM_RIGHTBUTTON,p2.x,
p2.y,this);
此问题由李海回答。
| |
|
|
| |
|
|