WIN32汇编语言教程:第05章 使用资源 · 5.1 菜单和加速键(1)

5.1.1 菜单和加速键的组成

如图5.1所示,在窗口中菜单位于标题栏下面,这个菜单称为“主菜单”或“顶层菜单”,菜单中的菜单项有“文件”、“查看”和“帮助”;单击主菜单上的项目后,可以弹出下一层菜单,叫做“弹出式菜单”或“子菜单”,子菜单中可以继续包含下一层子菜单,如单击“查看”弹出一个子菜单后,再单击其中的“工具栏”可以继续弹出一个子菜单,在子菜单中可以继续弹出下一层子菜单的菜单项最右边用一个三角箭头来表示。

有的程序在窗口的客户区单击鼠标右键也可以弹出一个菜单,单击标题栏图标也可以弹出一个系统菜单,这些菜单都属于弹出式菜单。

菜单中的菜单项有好几种,从资源定义的角度来看,分隔用的横线也是一个菜单项,除横线外其他菜单项可以供用户选择,也可以设置为“禁止”或“灰化”状态暂时停用,如图5.1中“被禁用的菜单项”和“被灰化的菜单项”所示。“禁用”的菜单项看上去和普通菜单项相同,但无法在上面单击鼠标,“灰化”的菜单项从外观上就已经表示是不可用的。菜单项也可以在左边显示选中标记,如图5.1中的“大图标”前的圆点和“状态栏”前的对钩,圆点表示选中标记是互斥的,对钩表示是不互斥的。


图5.1 菜单示意图

加速键就是菜单项的快捷键,如图5.1中的“字体”菜单项右边有个说明,表示当窗口是激活的时候,不必打开菜单,直接按“Alt”加“F”的组合键就相当于选择了“字体”菜单项,同样,直接按下“Ctrl”加“Alt”加“B”键等于选择了“背景色”菜单项,加速键也是资源的组成部分,一般将最常用的菜单项定义为加速键,以减少打开菜单的操作。加速键的定义要遵循惯例,如“Ctrl+C”和“Ctrl+V”一般定义为“拷贝”和“粘贴”,“Ctrl+X”定义为“剪切”等。当然加速键的定义并不是必需的,不定义加速键并不会影响程序的功能。

不管程序中是否定义加速键,Windows总是定义了几个默认的加速键,如“F10”键会打开窗口的主菜单,“Alt+空格”会打开系统菜单,“Alt+F4”等于单击了“关闭”按钮等。

5.1.2 菜单和加速键的资源定义

先来看一个用于演示菜单和加速键使用的例子程序,所有的源文件包含在所附光盘的Chapter05\Menu目录下面,运行后产生如图5.1所示的菜单,目录中包括资源脚本文件Menu.rc,汇编源文件Menu.asm,makefile文件和图标、光标等文件,这里是资源脚本文件Menu.rc:

#include                  <resource.h>
#define ICO_MAIN                         Ox1000  //图标
#define IDM_MAIN                         Ox2000  //菜单
#define IDA_MAIN                         Ox2000  //加速键
#define IDM_OPEN                         Ox4101
#define IDM_OPTION              Ox4102
#define IDM_EXIT                         Ox4103  
#define IDM_SETFONT             Ox4201
#define IDM_SETCOLOR            Ox4202
#define IDM_INACT               Ox4203
#define IDM_GRAY                Ox4204
#define IDM_BIG                 Ox4205
#define IDM_SMALL               Ox4206
#define IDM_LIST                Ox4207
#define IDM_DETAIL              Ox4208
#define IDM_TOOLBAR             Ox4209
#define IDM_TOOLBARTEXT         Ox4210
#define IDM_INPUTBAR            Ox4211
#define IDM_STATUSBAR           Ox4212
#define IDM_HELP                Ox4301
#define IDM_ABOUT               Ox4302
//##################################################################
ICO_MAIN ICON                  "Main.ico"
//##################################################################
IDM_MAIN  menu discardable
BEGIN
        popup "文件(&F)"
        BEGIN 
               menuitem        "打开文件(&O)...",IDM_OPEN
               menuitem        "关闭文件(&C)...",IDM_OPTION
               menuitem        separator
               menuitem        "退出(&X)",IDM_EXIT
        END
        popup "查看(&V)"
        BEGIN
              menuitem        "字体(&F)...\tAlt+F",IDM_SETFONT
              menuitem        "背景色(&B)...\tCtrl+Alt+B",IDM_SETCOLOR
              menuitem        separator
              menuitem        "被禁用的菜单项",IDM_INACT,INACTIVE
              menuitem        "被灰化的菜单项",IDM_GRAY,GRAYED
              menuitem        separator
              menuitem        "大图标(&G)",IDM_BIG
              menuitem        "小图标(&M)",IDM_SMALL
              menuitem        "列表(&L)",IDM_LIST
              menuitem        "详细资料(&D)",IDM_DETAIL
              menuitem        separator
              popup           "工具栏(&T)"
               BEGIN
               menuitem        "标准按钮(&S)",IDM_TOOLBAR
                 menuitem      "文字标签(&C)",IDM_TOOLBARTEXT
                 menuitem      "命令栏(&I)",IDM_INPUTBAR
               END
               menuitem        "状态栏(&U)",IDM_STATUSBAR
        END
        Popup                 "帮助(&H)" ,HELP
        BEGIN
               menuitem        "帮助主题(&H)\tF1",IDM_HELP
               menuitem        separator
               menuitem        "关于本程序(&A)...",IDM_ABOUT
        END
END
//##################################################################
IDA_MAIN accelerators
BEGIN
              VK_F1,    IDM_HELP,     VIRTKEY
               "B",      IDM_SETCOLOR, VIRTKEY,CONTROL,ALT
               "F",      IDM_SETFONT,  VIRTKEY,ALT
END
//##################################################################

上页:第04章 第一个窗口程序 · 4.4 实验(3) 下页:第05章 使用资源 · 5.1 菜单和加速键(2)

第05章 使用资源

版权所有 © 云南伯恩科技 证书:粤ICP备09170368号