- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC菜单以及与菜单相关联的操作.ppt
菜单以及与菜单相关联的操作 消息的分类 标准消息 除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中的菜单的拥有者中用
您可能关注的文档
- Forgame汪东风深度解析 轻游戏是未来互联网发展大方向.doc
- Forgame汪东风解读轻游戏发展 轻游戏潜力无限.doc
- Forgame集团CEO汪东风 轻游戏发展有着不可估量潜力.doc
- Forgame集团CEO汪东风轻游戏观 轻游戏制胜关键在于“内容为王”.doc
- Forgame集团汪东风 揭开轻游戏发展的“达芬奇密码”.doc
- Forgame集团汪东风揭秘轻游戏发展市场.doc
- Forgame集团汪东风看重轻游戏发展 轻游戏未来互联网发展主流.doc
- Forgame集团汪东风解读轻游戏 机缘巧合之下全民游戏时代来临.doc
- Forgame集团汪东风解读轻游戏发展历程 轻游戏发展不可估量.doc
- Forgame集团汪东风轻游戏战略 轻游戏迎来大发展.doc
- 2024《安徽省与海南省旅游业发展对比研究》11000字.docx
- 2024《今世缘酒业公司人才激励机制现状、问题及对策(附问卷)15000字》.docx
- 2024《高血压脑出血患者超早期康复护理的研究进展综述论文》6100字.docx
- 2024《舍得酒业公司绩效管理研究6600字》.docx
- 2024《连云港东海县冷链物流SWOT分析及发展建议》7000字.docx
- 2024《南京地铁11号线土建四工区施工组织设计案例》3800字.docx
- 2024《浪鲸卫浴公司存货管理存在的问题及对策》10000字.docx
- 2024《高校体育活动中伤害责任认定问题研究》20000字.docx
- 2024《帅康家电公司偿债能力存在的问题研究》9000字.doc
- 2024《会计信息失真的原因及治理措施分析—以尔康药业公司为例》8500字.doc
文档评论(0)