您的位置:首页 > 编程语言 > C语言/C++

vc++ 右键菜单的弹出

2013-06-01 18:16 176 查看
转载地址:http://lystey.blog.163.com/blog/static/10560852006117104531508/

1。首先要先建立一个菜单  修改ID为:IDR_POPMENU

2. 建立消息映射。右键菜单响应的消息是:WM_CONTEXTMENU

3. 在响应函数中加入下列代码:

CMenu PopMenu;

PopMenu.loadMenu(IDR_POPMENU);

PopMenu.GetSubMenu(0).TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,pWnd);

4.介绍一下上面用到的函数已经宏定义;

1、LoadMenu函数

  原型:BOOL LoadMenu( UINT nIDResource );

  其中nIDResource是菜单资源的ID号,这里用的是刚建立的IDC_POPMENU。

2、GetSubMenu函数

  原型:CMenu* GetSubMenu( int nPos ) const;

  此函数用于得到子菜单的指针。nPos为层数,0为第一层子菜单……以此类推。

    由于我们需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到第一层子菜单的类指针。 

3、TrackPopupMenu函数

  原型:BOOL TrackPopupMenu( UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = NULL );

  其中:

nFlags为屏幕坐标属性和鼠标坐标属性

屏幕坐标属性:

TPM_CENTERALIGN 横向将菜单以x居中

TPM_LEFTALIGN 横向将菜单以x左对齐

TPM_RIGHTALIGN 横向将菜单以x右对齐

鼠标按键属性(只在响应WM_CONTEXTMENU消息时有效):

TPM_LEFTBUTTON 连续按? 右键不会连续弹出菜单,鼠标右键不可用于选定菜单项

TPM_RIGHTBUTTON 连续按鼠标右键会连续弹出菜单,鼠标右键可用于选定菜单项

x,y均为屏幕坐标

lpRect 菜单所占的区域。如果为NULL,当用户在菜单以外的区域按鼠标键时,菜单会消失
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: