- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
菜单 三种类型的菜单: 菜单栏(主菜单) 弹出式子菜单 上下文菜单 编辑菜单资源 对于MDI应用程序(多文档应用程序), MFC应用程序向导自动生成两个菜单资源: IDR_MAINFRAME和IDR_PRJNAMETYPE (PRJNAME为应用程序项目名)。 在MDI子窗口打开之前, 系统显示IDR_MAINFRAME菜单, 在MDI子窗口打开之后, 系统显示IDR_PRJNAMETYPE菜单 对于SDI应用程序,MFC应用程序向导只生成一个菜单资源:IDR_MAINFRAME。 如果应用程序是数据库或ActiveX应用程序,那么MFC应用程序向导还生成相应的菜单资源。 每个菜单项都有一个ID值与之相联系 Caption中要求输入菜单项的名称。 在大多数菜单项中,都会有一个带有下划线的字符。这是用键盘来选择菜单项的标准Windows方法。如果在菜单编辑器的属性对话框中观察菜单资源,那么就可以在Caption域中看到在应用程序的菜单项中带有下划线的字符前面都有一个字符“&”。 可为菜单项设置快捷键 菜单消息响应 Windows应用程序是通过消息传递机制运行的。菜单项对命令的激发、调用是通过发送WM_COMMAND消息实现的。可是,当准备对一个菜单进行消息映射时,视图、文档、框架和应用类都可以对该菜单项ID进行映射。 处理的原则是:依据菜单的不同作用进行不同映射。如果该菜单用于文档的显示编辑,则最好在视图类中映射。但假如该菜单用于文档的打开和存储,则最好在文档类中进行映射。对于通用菜单,可以在框架类中映射。 由于类的成员函数只能调用该类的其他成员函数和基类函数,因而在不同类中映射莱单处理函数能够使用的函数集合不同。 如果发送菜单命令消息,那么其传递顺序如下: 对于对话框,命令传递顺序为: 本对话框-〉拥有该对话框的窗口-〉应用程序 对于SDI应用程序,命令传递顺序为: 视图—〉文档—〉SDI主框架窗口—〉应用程序 对于MDI应用程序,命令传递顺序为: 视图—〉文档—〉MDI子窗口—〉MDI主框架窗口—〉应用程序 菜单UI机制及显示状态的修改 许多情况下菜单项还可能有多个状态: 更新处理函数以一个指向CCmdUI对象的指针作为参数,处理函数可以利用该指针对菜单项进行状态设置 动态菜单 所谓动态菜单是指在运行时为响应出现的状态而改变的菜单。 MFC提供CMenu类。该类提供了一些函数允许用户在程序执行期间控制菜单的内容。这些函数主要有: (1) GetMenu()函数: (2) GetSubMenu()函数: (3) InsertMenuItem()函数: (4) DeletMenu()函数: (5) GetMenuItemCount ()函数: (6) EnableMenuItem()函数: 工具栏 敏感帮助 与菜单中某项具有相同ID 状态栏 一般而言,状态栏窗口既不接受用户输入也不产生命令消息,它的作用是在程序的控制下在框(pane)中显示一些文本。 应用程序举例 例1:运行 步骤: 1.建立基于单文档的工程Menu_Tool_Status 2.菜单条和状态条的可视化实现 3.工具条的可视化实现 4.为菜单项添加消息映射 5.为CMenu_Tool_StatusView类添加成员变量 6.应用程序代码 7.上下文菜单 例2 对话框中的菜单 1.创建基于对话框的工程 2.(1)为对话框布局按钮 按钮1 IDC_VOICE_BUTTON Voice 按钮2 IDC_SHOW_BUTTON Show 按钮3 IDC_EXIT_BUTTON Exit (2)为对话框添加菜单 File Voice ID_VOICE_MENU Show ID_SHOW_MENU Separator=true Exit ID_EXIT_MENU Help About ID_ABOUT_MENU 3.将菜单与对话框连接 3.代码 void CDialogMenuDlg::OnVoiceMenu() { // TODO: 在此添加命令处理程序代码 MessageBeep((WORD)-1); DWORD iTime=GetCurrentTime(); while(GetCurrentTime()iTime+500); Mes
文档评论(0)