- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC菜单及与菜单相关联的操作
菜单以及与菜单相关联的操作 消息的分类 标准消息 除WM_COMMAND之外,所有以WM_开头的消息。 从CWnd派生的类,都可以接收到这类消息。 命令消息 来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。 从CCmdTarget派生的类,都可以接收到这类消息。 通告消息 由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。 从CCmdTarget派生的类,都可以接收到这类消息。 一个类接收一个命令消息后, 文件做了哪些修改? (a)在类的定义中的消息映射中添加命令消息函数原 型 (b)在源文件的消息映射中用ON_COMMAND宏将菜单项的 ID号和命令消息响应函数进行关联 (c)在源文件中增加了命令消息响应函数。 它的形式跟Windows标准消息是一样的,不同的是ON_COMMAND宏。 添加2个菜单,ID值分别为IDM_UNDO和IDM_DELETE_ALL,分别用来删除最后画的一条直线和窗口中所有的直线。 (1)为视图类添加对这2个菜单项的消息响应 (2)OnUndo() { int nUpperBound=m_ptrArray.GetUpperBound (); if(nUpperBound0) return; CLine *pline=(CLine *)(m_ptrArray.GetAt (nUpperBound )); delete pline; m_ptrArray.RemoveAt (nUpperBound); Invalidate(); } (3) OnDeleteAll() { int nCount=m_ptrArray.GetSize (); for(int i=0;inCount;i++) { delete m_ptrArray.GetAt (i); } m_ptrArray.RemoveAll (); Invalidate(); } 命令更新 菜单项状态的维护是依赖于CN_UPDATE_COMMAND_UI消 息,谁捕获CN_UPDATE_COMMAND_UI消息,MFC就在其 创建一个CCmdUI对象。 可以通过手工或利用ClassWizard在消息映射中添加 ON_UPDATE_COMMAND_UI宏来捕获CN_UPDATE_COMMAND_UI 消息。 命令更新 利用ClassWizard为一个菜单添加命令更新消息后,在消息映射 中,一个宏,用来把该消息和处理这个消息的消息响应函数进行 关联了。 更新命令UI处理程序仅应用于弹出式菜单项上的项目,不能应用于永久显示的顶级菜单项目。如File、Edit等。 菜 单 获取菜单栏 菜单栏是属于框架的,在框架类中可以通过GetMenu方法去得到菜单栏。 CMenu类提供了函数对菜单进行操作。 GetSubMenu可以获取一个子菜单。 GetMenu和GetSubMenu都是返回指向菜单的指针,但前者是返回指向菜单栏的指针,而后者返回指向子菜单的指针。 右键单击弹出菜单 在VC中已做好。通过Project?Add To Project?组件,选择Popup Menu就可 。 选择增加一个弹出菜单到哪个窗口,不要选择框架。要增加到视图窗口。视图窗口始终覆盖在框架上,框架类是不能响应鼠标消息的,而右键单击是鼠标消息。 实现机制? 首先增加了一个菜单资源,然后增加了一个函数 OnContentMenu,在该函数内调用TrackPopupMenu来 绘制菜单 手工实现右键单击弹出菜单 (1)增加一个弹出菜单。Abc下有2个菜单,Show和Edit。 (2)为视图类捕获右键单击的消息。 (3)参考OnContextMenu。 CMenu menu; menu.LoadMenu(…). 【注意:】TrackPopupMenu函数的参数X,y是屏幕坐标,是相对于屏幕左上角来说的,而鼠标单击时,鼠标的位置是相对于视图左上角来讲的。是不同的坐标系统。所以要把视图坐标转换为屏幕坐标。函数ClientToScreen函数实现该功能。 对弹出菜单的菜单项进行命令响应 【注意:】在TrackPopupMenu中的菜单的拥有者中用
您可能关注的文档
- E-mai推广技巧.ppt
- EMS简答29题.doc
- EO体系内检查表.doc
- epro工项目管理系统演示文稿.ppt
- ETF业务作指南.ppt
- Excel常用函数应用举例.doc
- EPV-O.ppt
- Excel格制作常用技巧集合.doc
- FCT脱硫尘说明.doc
- FANUC统应用举例.doc
- 2025年长沙银行浏阳支行社会招聘考试备考题库及答案解析.docx
- 2025年浙商银行成都分行社会招聘考试备考题库及答案解析.docx
- 2025中国农业科学院烟草研究所高层次人才招聘5人考试备考题库及答案解析.docx
- 2025中国冶金地质总局二局 国冶二局(福建)集团有限公司招聘10人考试备考题库及答案解析.docx
- 2025中国宗教杂志社招聘3人考试备考题库及答案解析.docx
- 2025年长沙银行益阳支行社会招聘考试备考题库及答案解析.docx
- 2025中国农业科学院农田灌溉研究所第二批招聘14人(河南)考试备考题库及答案解析.docx
- 2025中国农业科学院郑州果树研究所青年英才招聘3人考试备考题库及答案解析.docx
- 【统编版】高中语文必修上册第1单元2.1《立在地球边上放号》精美课件(23张PPT).pptx
- 【统编版】高一语文必修上册第一单元2.1《立在地球边上放号》优质课(26张PPT)课件.pptx
最近下载
- 绿化养护方案(同名6533).doc VIP
- T∕ZZB 1894-2020 双平臂落地抱杆.pdf VIP
- (2024)反洗钱知识竞赛题库(含答案).pptx VIP
- 4-输电线路工程质量强制性条文执行记录表.doc VIP
- 回忆鲁迅先生教案.docx VIP
- 计算机日常使用维护培训ppt课件.pptx VIP
- GB50204-2015 《混凝土结构工程施工质量验收规范》GB50204-2015 (1).docx VIP
- 2025年4月20日四川省事业单位考试《公共基础知识》试题及答案解析参考.pdf
- 《2#空压机站施工组织设计》.doc
- 13J933-2 体育场地与设施(二).docx VIP
文档评论(0)