mfc第六章菜单06修改版_第1页
mfc第六章菜单06修改版_第2页
mfc第六章菜单06修改版_第3页
mfc第六章菜单06修改版_第4页
mfc第六章菜单06修改版_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualC forWindowsProgramming Guoyan fang 第五章 菜单 工具栏和状态栏 菜单在程序中的位置 菜单 菜单的作用 菜单是一个Windows程序中的命令的集合 程序功能的体现 菜单项可以发布命令消息 菜单术语 菜单主菜单子菜单菜单项分隔条浮动菜单菜单项的ID号 与菜单项相关的命令消息 1 更新命令消息 UPDATE COMMAND UI2 命令消息 COMMAND 菜单项的命令消息的执行顺序 执行每个菜单项命令会依次触发下两种消息 1 先引发菜单项的更新命令消息 UPDATE COMMAND UI2 在引发菜单项的命令消息 COMMAND所以菜单的初始化内容常放在更新命令消息的消息处理函数中 菜单的命令功能放在命令消息的消息处理函数中 菜单项的命令消息的处理顺序是 因为SDI结构项目中的四个类都是CCmdTarget的子类 所以他们都能接收命令消息 因此对于命令消息WM COMMAND的处理顺序是 1 视窗类 2 文档类 3 窗口类 4 应用类 菜单项的种类及其它 有主 子菜单左边带v的菜单 带检查标志的菜单右边带 的菜单 有对话框的菜单右边带 的菜单 有子菜单的菜单字母带下划线的菜单 F 该菜单的快捷键带功能键的菜单 如 Ctrl M 该菜单的加速键分隔线灰化的菜单浮动式的菜单子菜单可有功能提示 在状态条中 快捷键的生成方法 在菜单编辑器中 打开菜单属性表 在Caption内 找到你欲定义为快捷键的字母 在此字母前加上字符 此快捷键即生成 使用快捷键的方法 先亮出的菜单 然后按 Alt 快捷键 加速键的生成方法 在菜单编辑器中 打开菜单属性表 在Caption内的名串後 加上字符串 tCtrl 字母 然后修改加速表资源Accelerator 设置加速键 此时加速键即生成 使用加速键的方法 加速键与快捷键不同 不必亮开菜单 在任何时候都可使用加速键 菜单项灰化的方法 在更新命令消息的消息处理函数中 voidC类名 OnUpdate函数名 CCmdUI pCmdUI TODO AddyourcommandupdateUIhandlercodeherepCmdUI Enable TRUE 不灰化pCmdUI Enable FALSE 灰化 菜单项设置的方法 在更新命令消息的消息处理函数中 voidC类名 OnUpdate函数名 CCmdUI pCmdUI TODO AddyourcommandupdateUIhandlercodeherepCmdUI SetCheck 1 设置pCmdUI SetCheck 0 不设置 浮动菜单的实现方法 1 生成一新菜单IDR MENU1 2 通过ClassWizard建立消息WM CONTEXTMENU的映射3 为WM CONTEXTMENU消息的消息处理函数编程 voidCEx7View OnContextMenu CWnd pWnd CPointpoint TODO Addyourmessagehandlercodehere 弹出IDR MENU1菜单的第一个主菜单项的子菜单帘CMenum m LoadMenu IDR MENU1 CMenu p m GetSubMenu 0 p TrackPopupMenu TPM LEFTALIGN TPM RIGHTBUTTON point x point y this 介绍TrackPopupMenu函数 CMenu TrackPopupMenuBOOLTrackPopupMenu UINTnFlags intx inty CWnd pWnd LPCRECTlpRect NULL 其中 nFlags TPM CENTERALIGN 2 相对于X坐标而言 TPM LEFTALIGN 1 相对于X坐标而言 TPM RIGHTALIGN 3 相对于X坐标而言 TPM LEFTBUTTON 浮动菜单在x y点的左边弹出 TPM RIGHTBUTTON 浮动菜单在点x y的右边弹出 x y 鼠标的坐标 pWnd 当前窗口 lpRect NULL menuItem1menuItem2menuItem3 1 2 3 总结 关于菜单我们学习了 1 菜单项的种类2 与菜单相关的命令消息COMMANDUPDATE COMMAND UI3 普通菜单的建立和使用4 浮动菜单的生成和使用 工具栏 工具栏 状态栏 对话框栏都属于控制栏 它们都是从CControlBar派生出来的 工具栏 工具栏是CToolBar类的一个对象 状态栏是CStatusBar类的一个对象 它们都是从CControlBar类派生出来的 在典型的SDI应用程序中 CToolBar对象占用CMainFrame客户区的顶部 CStatusBar对象占用CMainFrame客户区的底部 视图占用框架的其余部分 CMainFrame客户区的中间部分 多数情况下 工具栏按钮对应于一个菜单项 所以工具栏按钮会产生与菜单一样的命令消息 工具栏的实现 创建自己的工具栏创建新的工具栏资源 将在OnCreate 中使用 在主框架窗口类中增加CToolBar成员变量 在OnCreate 中增加创建工具栏的相应代码 包括实现Docking 停靠 或Floating 浮动 技术 m wndToolBar CreateEx this TBSTYLE FLAT WS CHILD WS VISIBLE CBRS TOP CBRS GRIPPER CBRS TOOLTIPS CBRS FLYBY CBRS SIZE DYNAMIC m wndToolBar LoadToolBar IDR MAINFRAME Docking工具栏的三个必须步骤 使框架窗口支持Docking操作CFrameWnd EnableDocking 使工具栏支持Docking操作CControlBar EnableDocking 将工具栏Docking到框架窗口的指定边框上 CFrameWnd DockControlBar 使工具栏永久浮动 Floating 的两个步骤 在CControlBar EnableDocking中使用参数0相对应CFrameWnd DockControlBar使用CFrameWnd FloatControlBar 状态栏 工具栏 状态栏 对话框栏都属于控制栏 它们都是从CControlBar派生出来的 1 状态栏的pane 2 状态栏数组 在MaimFrm cpp中定义 staticUINTindicators ID SEPARATOR statuslineindicatorID INDICATOR CAPS ID INDICATOR NUM ID INDICATOR SCRL pane与数组元素一一对应 与状态栏相关的名词与概念 pane0 pane1 pane2 pane3 创建状态栏的三部曲 1 设定CStatusBar对象 CStatusBarsb 2 调用Create 函数或CreateEx 函数 3 调用SetIndicators 函数使数组元素和pane对应起来 函数CWnd SetWindowText 可修改pane0 函数C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论