热情软件屋

 

弹出菜单的位置总不对


编号: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);
    

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio