第3章MFC菜单编程讲述.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章MFC菜单编程讲述

主要内容 菜单分类 菜单创建 菜单加载与显示 响应菜单命令 更新菜单项 菜单动态编辑 3.1 菜单编程 菜单分类: 弹出式菜单 下拉式菜单 级联菜单 快捷菜单 3.1.1 创建菜单 创建菜单步骤: (1)添加一个自定义的菜单资源; (2)用菜单编辑器设计菜单; (3)将菜单加入应用程序; (4)为每个菜单命令添加消息映射。 3.1.1 创建菜单 明确几个点 菜单ID命名: ID_顶层菜单名_下一级菜单名…… 快捷键,例Alt+k 加速键,例Ctrl+k 3.1.1 创建菜单 演示添加菜单资源,使用菜单编辑器编辑菜单。 菜单命令项及其消息映射 MFC程序可以处理两种菜单消息: WM_COMMAND:为菜单命令消息; 菜单命令项消息映射宏格式是: ON_COMMAND(ID,消息响应函数名) ON_COMMAND(ID_FILE_NEW, OnFileNew) UPDATE_COMMAND_UI:为菜单更新消息,处理菜单状态的动态变化。如希望根据程序的执行状态,激活或禁用某些菜单项,设置选中标记,或更改菜单项文字等, 菜单命令项及其消息映射 用户点击菜单项后,会产生命令消息WM_COMMAND,消息的参数中会包含菜单项的ID号,以区别点击那个菜单项。 命令消息可以映射到视图、文档、框架或者应用程序类中。 命令消息处理路径:视图类→文档类→文档模板类→框架窗口类→应用程序类 菜单命令项及其消息映射 演示菜单的两种消息响应。尤其是UPDATE_COMMAND_UI消息响应,利用响应函数中传进来的CCmdUI对象指针可完成设置菜单项可使用,不可使用,变灰,设置标记菜单等操作 。 pCmdUI-Enable(false);// true和false 来设置能否使用或变灰 pCmdUI-SetCheck(true);// true和false 来设置标记 pCmdUI-SetText(“cut”); //改变菜单项文本内容 菜单的相关重要函数 1.CMenu* GetMenu( ) ;// 得到菜单指针 2.CMenu* GetSubMenu( ) ;// 得到子菜单指针,也就是弹出菜单指针 3.UINT CheckMenuItem( );// 将菜单项加上或去掉√(对号)标记 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND | MF_CHECKED的组合 b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION | MF_CHECKED的组合 菜单的相关重要函数 4. BOOL SetDefaultItem();// 设置缺省菜单,也就是将菜单项粗体显示 a.如果第一个参数是索引号,第二个参数必须是true b.如果第一个参数是ID号,第二个参数必须是false * 注 :一个子菜单最多只能有一个缺省菜单项 5. BOOL SetMenuItemBitmaps( );// 设置位图标记,标记大小为13*13像素 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION 第三个参数是没有选中时的位图;第四个参数是标记时的位图 菜单的相关重要函数 6. UINT EnableMenuItem();//使菜单项有效,无效,或变灰 a.如果第一个参数是ID号,第二个参数必须是MF_BYCOMMAND 和有效,无效,或变灰 的组合 b.如果第一个参数是索引号,第二个参数必须是MF_BYPOSITION 和有效,无效,或变灰 的组合 * 注 :若让此函数生效,必须在CMainFrame构造函数中添加:m_bAutoMenuEnable =false。 菜单的相关重要函数 7. BOOL SetMenu( CMenu* pMenu );//在当前窗口上设置新菜单或移除菜单。 如果参数为0,则是移除菜单。 自己创建菜单 { CMenu menu; menu.LoadMenu(IDR_MENU1); SetMenu(menu); menu.Detach(); } 8. HMENU Detach( );// 如果将CMenu 对象设置为局部对象,使用Detach()从menu对象中分离窗口菜单句柄,从而当menu对象析构的时候窗口菜单资源不随之销毁 。 菜单的相关操作的实现方法 a.添加对号标记: 方法一: GetMenu()-GetSubMenu(0)-CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED );//通过索引 方法二: GetMenu()-GetSubMenu(0)-CheckMenuItem(ID_FILE_NEW

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档