MFC制作右键弹出菜单_第1页
MFC制作右键弹出菜单_第2页
MFC制作右键弹出菜单_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MFC 制作右键弹出菜单2010 年 08 月 06 日 20:14 转载自 mopishhare最终编辑ttcc2009 一、在资源编辑器中建立一个菜单资源新建一个菜单资源 ,比如把菜单的 ID 号为 IDC_POPMENU 。此菜单有一项两层 ,即有一个可弹出的菜单项 ,而此菜单项的弹出内容即为将要建立的弹出式菜单的内容。至于每一个菜单项的消息映射 ,与一般的菜单相同。二、使用 CMenu 类对象CMenu 类的成员函数较多 ,但建立弹出式菜单只需用到其中几个成员函数。1、LoadMenu 函数功能 :从应用程序的可执行文件中加载菜单资源原型 :BOOL LoadMenu(UINT nID

2、Resource;其中 nIDResource是菜单资源的 ID 号,这里用的是刚建立的IDC_POPMENU 。2、GetSubMenu函数功能 :此函数用于得到子菜单的指针。原型 :CMenu* GetSubMenu(int nPosconst;nPos为层数 ,0 为第一层子菜单以此类推。由于我们需要的是 “可弹出项 ”的第一层子菜单 ,因此用 GetSubMenu(0来得到第一层子菜单的类指针。3、TrackPopupMenu函数功能 :在指定位置显示弹出菜单,并跟踪所选择的项原型 :BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* p

3、Wnd,LPCRECTlpRect=NULL;其中 :nFlags为屏幕坐标属性和鼠标坐标属性屏幕坐标属性 :TPM_CENTERALIGN 横向将菜单以 x 居中TPM_LEFTALIGN横向将菜单以 x 左对齐TPM_RIGHTALIGN横向将菜单以 x 右对齐鼠标按键属性 (只在响应 WM_CONTEXTMENU消息时有效 :TPM_LEFTBUTTON 连续按 ? 右键不会连续弹出菜单 ,鼠标右键不可用于选定菜单项 TPM_RIGHTBUTTON 连续按鼠标右键会连续弹出菜单 ,鼠标右键可用于选定菜单项x,y 均为屏幕坐标lpRect 菜单所占的区域。如果为NULL, 当用户在菜单以外

4、的区域按鼠标键时,菜单会消失三、具体实现方法用 ClassWizard 中的 “Add Windows Message Handler功”能添加对NM_RCLICKT 消息的响应函数 ,函数中代码如下 ,注释很详细 ,在 vc6+win2000 环境下调试成功 :void CMyView:OnRclick(NMHDR* pNMHDR,LRESULT* pResultCMenu menu,*pSubMenu;/定义下面要用到的cmenu 对象menu.LoadMenu(IDC_POPMENU;/ 装载自定义的右键菜单pSubMenu=menu.GetSubMenu(0;/获取第一个弹出菜单 ,所以第一个菜单必须有子菜单CPoint oPoint;/定义一个用于确定光标位置的位置GetCursorPos(&oPoint;/获取当前光标的位置 ,以便使得菜单可以跟随光标pSubMen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论