- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
菜单以及与菜单相关联的操作 消息的分类 标准消息 除WM_COMMAND之外,所有以WM_开头的消息。 从CWnd派生的类,都可以接收到这类消息。 命令消息 来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。 从CCmdTarget派生的类,都可以接收到这类消息。 通告消息 由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以WM_COMMAND形式呈现。 从CCmdTarget派生的类,都可以接收到这类消息。 一个类接收一个命令消息后, 文件做了哪些修改? (a)在类的定义中的消息映射中添加命令消息函数原 型 (b)在源文件的消息映射中用ON_COMMAND宏将菜单项的 ID号和命令消息响应函数进行关联 (c)在源文件中增加了命令消息响应函数。 它的形式跟Windows标准消息是一样的,不同的是ON_COMMAND宏。 标准的Windows消息的路由: 直接在消息映射表中上溯,在消息映射表中查找,如果吻合就调用表中所记录的消息处理程序。 命令消息的路由呢? 命令消息的路由 AfxWndProc AfxCallWndProc WindowProc OnWndMsg OnCommand OnNotify OnCmdMsg 视图类----- 文档类-----框架类----- 应用类 命令消息接收物的类型 处理次序 Frame窗口 1、View 2、Frame窗口对象 3、CWinApp对象 View 1、View本身 2、Document Document 1、Document本身 2、Document Template 添加2个菜单,ID值分别为IDM_UNDO和IDM_DELETE_ALL,分别用来删除最后画的一条直线和窗口中所有的直线。 (1)为视图类添加对这2个菜单项的消息响应 利用ClassView添加对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等。用来使菜单项变灰,或正常显示等,或打勾等。 菜 单 300 301 302 303 304 主任室 0 1 2 3 0 1 2 3 4 楼层 房间 菜单的结构 获取菜单栏 菜单栏是属于框架的,在框架类中可以通过GetMenu方法去得到菜单栏。 CMenu类提供了函数对菜单进行操作。 GetSubMenu可以获取一个子菜单。 GetMenu和GetSubMenu都是返回指向菜单的指针,但前者是返回指向菜单栏的指针,而后者返回指向子菜单的指针。 动态增加菜单、删除菜单 在框架窗口创建之后动态创建菜单 添加一个弹出菜单到末尾或插入一个弹出菜单 (1)声明一个菜单类的对象 (2)CreatePopupMenu创建一个空的弹出菜单, (3)采用AppendMenu函
您可能关注的文档
最近下载
- 【作风建设论述摘编】2025关于加强党的作风建设论述摘编(七)PPT.pptx VIP
- 水平四足球大单元教案.docx VIP
- 义和团运动和八国联军侵华课件-2025-2026学年统编版(2024)历史八年级上册.pptx VIP
- 手术讲解模板:双侧牵张成骨下颌骨前移术.ppt
- 羊的胚胎移植(15分钟).ppt VIP
- 【作风建设论述摘编】2025关于加强党的作风建设论述摘编(三)PPT.ppt VIP
- 中西医学的本质特点及其模式.ppt
- 甲午中日战争与列强瓜分中国狂潮课件++2025-2026学年统编版八年级历史上册.pptx VIP
- SY75C 9三一履带液压挖掘机.pdf VIP
- 工作面采煤设计方案.doc VIP
文档评论(0)