表6.1菜单 General属性对话框的各项含义 项目 含义 ID 菜单的资源ID号 Caption菜单项的标题文本,当其中某字母的前面含有&符号 时,则该字母与At键构成组合键 Separator选中时,则相应的菜单项是个分隔符或一条水平线 Checked选中时,则相应的菜单项前显示一个选中标记"√ Pop up选中时,表该菜单项含有弹出式子菜单 Grayed选中时,表示该菜单项呈灰色显示,该菜单项被禁用 Inactive 选中时,表示该菜单项没有被激活,用户不能选用 Help 选中时,表示该菜单项在程序运行时被放于顶层菜单 的最右端 Break 其默认值为Nonηe,表示菜单项按常规形式显示。该项 的取值还可为 Column或Bar, Pomt指明当光标移到该菜单项时在状态栏上显示的提示 U回
返回 6 项目 含义 ID Caption Separator Checked Pop_up Grayed Inactive Help Break Prompt 菜单的资源ID号 菜单项的标题文本,当其中某一字母的前面含有&符号 时,则该字母与Alt键构成组合键 选中时,则相应的菜单项是一个分隔符或一条水平线 选中时,则相应的菜单项前显示一个选中标记“√” 选中时,表示该菜单项含有弹出式子菜单 选中时,表示该菜单项呈灰色显示,该菜单项被禁用 选中时,表示该菜单项没有被激活,用户不能选用 选中时,表示该菜单项在程序运行时被放于顶层菜单 的最右端 其默认值为None,表示菜单项按常规形式显示。该项 的取值还可为Column或Bar, 指明当光标移到该菜单项时在状态栏上显示的提示 表6.1 菜单General属性对话框的各项含义
2.建立快捷键 在 Windows应用程序中的某些菜单项后面有一个组合键, 表示一个快捷键( shortcut key),在程序运行过程中 如果用户按下了该组合键,则相应的菜单命令就会被执 。当然,若要使用快捷键选择某个菜单项,就必须事 先对其作出定义。现在我们来为刚才创建的菜单添加快 捷键,具体步骤如下 步骤一:在工作区窗口的【 Resource view】选项卡中, 双击【 Accelerator)文件夹,双击 IDR MAINFRAM, 则系统会弹出一个加速器表 步骤二:在加速器表中浏览 发现Ctrl+D还没有被使 用,我们就把Ctrl+D设置为菜单项【个人资料】的快捷键。 方法是双击加速器表未尾的空行,将弹岀快捷键的属性 对话框( Accel Properties) U回
返回 7 2. 建立快捷键 在Windows应用程序中的某些菜单项后面有一个组合键, 表示一个快捷键(shortcut key),在程序运行过程中, 如果用户按下了该组合键,则相应的菜单命令就会被执 行。当然,若要使用快捷键选择某个菜单项,就必须事 先对其作出定义。现在我们来为刚才创建的菜单添加快 捷键,具体步骤如下: 步骤一:在工作区窗口的【Resource View】选项卡中, 双击【Accelerator】文件夹,双击IDR_MAINFRAME, 则系统会弹出一个加速器表 。 步骤二:在加速器表中浏览一下,发现Ctrl+D还没有被使 用,我们就把Ctrl+D设置为菜单项【个人资料】的快捷键。 方法是双击加速器表末尾的空行,将弹出快捷键的属性 对话框(Accel Properties)
在属性对话框( Accel Properties)中,各项的含义如 表62所 表62 Accel Properties对话框中各选项的含义 选项 含义 ID 为了能使设定的快捷键与某个菜单项的功 能相对应,从中选择所需的菜单资源ID号 Modifiers用来选择ct、At、Sht键是否为快捷 键的组成键 pe 用来确定快捷键的值是虛拟键( rickey还 是ASCI Key 是指启动快捷键的键盘按键 Next Key 单击此按钮时,用户所按的任何按键将成 Typed 为快捷键的键值 U回
返回 8 在属性对话框(Accel Properties)中,各项的含义如 表6.2所示。 表6.2 Accel Properties对话框中各选项的含义 选项 含义 ID Modifiers Type Key Next Key Typed 为了能使设定的快捷键与某个菜单项的功 能相对应,从中选择所需的菜单资源ID号 用来选择Ctrl、Alt、Shift键是否为快捷 键的组成键 用来确定快捷键的值是虚拟键(VirKey)还 是ASCII 是指启动快捷键的键盘按键 单击此按钮时,用户所按的任何按键将成 为快捷键的键值
步骤三:在对话框中的【ID】下拉列表中选择 ID DISPLAY DATA】选项,当选中ID号时,【ID 框中同时显示出此⑩号对应的整数,如 ID DISPLAY DATA=32771。 步骤四:在【Key】列表框中输入“D”,确认 Modifiers】栏中的【Ctrl】复选框被选中,而且【Alt 和【Shif】都未被选中;或者,直接单击【 Next Key yped】按钮,按下Ctr+D组合键放开,此时系统会自动 记录所按下的Ctrl+D键为所要设定的组合键。按【 Enter】 键继续。 步骤五:为了在【显示】菜单中提示【个人资料】菜单 框中的内容修改为“个人资料(D)tCrt+D”·将【 Caption】 项的快捷键,可以返回6.1.1节中的步骤五 这样,我们就建立了一个完整的菜单资源 U回
返回 9 步骤三: 在对话框中的 【ID】 下 拉 列 表 中 选 择 【ID_DISPLAY_DATA】选项,当选中ID号时,【ID】 框 中 同 时 显 示 出 此 ID 号 对 应 的 整 数 , 如 ID_DISPLAY_DATA=32771。 步骤四: 在 【Key】 列表框中输入 “ D” , 确 认 【Modifiers】栏中的【Ctrl】复选框被选中,而且【Alt】 和【Shift】都未被选中;或者,直接单击【Next Key Typed】按钮,按下Ctrl+D组合键放开,此时系统会自动 记录所按下的Ctrl+D键为所要设定的组合键。按【Enter】 键继续。 步骤五:为了在【显示】菜单中提示【个人资料】菜单 项的快捷键,可以返回6.1.1节中的步骤五,将【Caption】 框中的内容修改为“个人资料(D)\tCtrl+D” 。 这样,我们就建立了一个完整的菜单资源
3菜单功能的实现 在MFC框架中,莱单命令消息是按照一定的顺序进行 传递的。对于一个单文档应用程序,消息传递的顺序为 视图类→文档类→框架类→应用程序类。因此,如果我 们在视图类和文档类中同时定义了某个菜单项的消息映 射接口时,由于消息首先传递给视图类,在视图类中对 此消息做出了响应,所以,文档类中定义的此菜单项的 消息映射函数就无法执行。 在菜单资源中,我们定义了MFC如何来构造菜单的结 构,同时还指定了菜单的资源⑩D号,MFC通过 Class Wizard会自动把菜单和相应的框架窗口联系在一起 但除了由系统产生的少量代码外,MFC不能自动地对程 序的菜单项进行响应,必须用手工实现 U回
返回 10 3 菜单功能的实现 在MFC框架中,菜单命令消息是按照一定的顺序进行 传递的。对于一个单文档应用程序,消息传递的顺序为: 视图类→文档类→框架类→应用程序类。因此,如果我 们在视图类和文档类中同时定义了某个菜单项的消息映 射接口时,由于消息首先传递给视图类,在视图类中对 此消息做出了响应,所以,文档类中定义的此菜单项的 消息映射函数就无法执行。 在菜单资源中,我们定义了MFC如何来构造菜单的结 构 , 同 时 还 指 定 了 菜 单 的 资 源 ID 号 , MFC 通 过 ClassWizard会自动把菜单和相应的框架窗口联系在一起。 但除了由系统产生的少量代码外,MFC不能自动地对程 序的菜单项进行响应,必须用手工实现