琢石成器WIN32汇编程序设计学习(八)-第5章 使用资源(二)-实例操作
本帖最后由 兰陵月 于 2018-3-16 14:34 编辑书上知识:
菜单项目的定义方法有3类:
用法1定义的是普通菜单项,图5.1中的“字体”与“背景色”等菜单项都是这样定义的,它的组成部分如下:
菜单文字—显示在菜单项中的字符串。如果需要字符串中某个字母带下划线,那么可以在字母前面加&符号,如“字体(F)”就要写成“字体(&F)…”,带下划线的字母可以被系统自动当做快捷键:在这里,当菜单打开的时候按下F键,那么就相当于鼠标选择了“字体”选项。在同一个弹出菜单中要注意不同的菜单项快捷键应该有所区别。另外,如果要把加速键的提示信息显示在菜单项的右边,如“字体”菜单项中的“Alt+F”字符,可以在两者中间加\t(表示插入一个Tab字符),写为“字体(&F)…\tAlt+F”,这样Tab后面的字符在显示的时候会右对齐。
命令ID—用来分辨不同的菜单项。当菜单被选中的时候,Windows会向窗口过程发送WM_COMMAND消息,消息的参数就是这个命令ID。用命令ID可以分辨用户究竟选中了哪个菜单项,所以不同的菜单项应该定义不同的ID值,除非想让两个菜单项的功能相同。
选项—用来定义菜单项的各种属性,它可以是下列数值:
CHECKED—表示打上选定标志(对钩)
GRAYED—表示菜单项是灰化的。
INACTIVE—表示菜单项是禁用的。
MENUBREAK或MENUBARBREAK—表示将这个菜单项和以后的菜单项列到新的列中。用MENUBREAK时新列与旧列之间无分隔线;用MENUBARBREAK时新列与旧列之间有分隔线。
用法2定义的是菜单项之间的分隔线,显然,分隔线是不需要字符串和选项的。
用法3定义的是弹出式菜单,顶层菜单是由多个弹出式子菜单组成的,所以在Menu.rc文件中,主菜单是由“文件”、“查看”和“帮助”3个顺序定义的弹出式菜单组成的,弹出式菜单的定义也可以嵌套,如“查看”菜单中的“工具栏”又是一个弹出式菜单,在嵌套的时候要注意像写C的源程序一样把begin和end(或者{和})正确地配对。popup菜单的选项列表可以是以下的值:
GRAYED—表示菜单项是灰化的。
INACTIVE—表示菜单项是禁用的。
HELP—表示本项和以后的菜单项时右对齐的,如图5.1中所示的“帮助”菜单。
1、根据用法3,POPUP菜单有GRAYED、INACTIVE、HELP三个选项值,但是经过实验,非顶层弹出式菜单也可以选择CHECKED属性,如下图,在rc文件中将一个非顶层的弹出式菜单“工具栏”菜单后附加CHECKED属性:
程序运行后,可以看到这个菜单项也处于选中状态,如下图:
2、当然如果在“文件”、“查看”、“帮助”三个顶层弹出式菜单定义中附加CHECKED属性,则没有任何效果,不会有处于选中状态的情况。如下图:
“查看”菜单(顶层弹出式菜单)并未出现选中后出现下拉菜单的状态:
3、在“文件”、“查看”、“帮助”三个顶层弹出式菜单后,均附加HELP属性,运行后,三个菜单仍按原来顺序全部靠最右排列:
4、在第二个菜单“查看”菜单后附加HELP属性,“文件”和“帮助”菜单不附加任何属性,运行后可以发现,从有HELP属性的菜单开始(包括本菜单),剩下的所有菜单均靠右排列,如下图:
5、MENUBREAK与MENUBARBREAK的区别。MENUBARBREAK会在MENUBREAK基础上加一条分隔的竖线,如下面两张图,前2图是MENUBREAK属性,后面2张图是MENUBARBREAK属性。
6、顶层弹出式菜单项和普通子菜单项附加INACTIVE属性运行后的表现形式是不一样的,顶层弹出式菜单附加INACTIVE的效果和附加GRAYED属性的效果是一样的,都是灰化效果。如下图:
{:10_257:}
页:
[1]