突现式功能表的各项可以是「被选中的」,这意味著Windows在功能表文字的左端显示一个小的选中标记,选中标记让使用者知道从功能表中选中了哪些选项。这些选项之间可以是互斥的,也可以不互斥。顶层功能表项不能被选中。
顶层功能表或突现式功能表项可以被「启用」、「禁用」或「无效化」。「启动」和「不启动」有时候被当作「启用」和「禁用」的同义词。被启用或禁用的功能表项在使用者看来是一样的,但是无效化的功能表项是使用灰色文字来显示的。
从使用者的角度来看,启用、禁用和无效化的功能表项都是可以「选择的」(被选择的功能表项目会被加高亮度显示),也就是说,使用者可以使用滑鼠选择被禁用的功能表项,将反相显示游标列移动到禁用的功能表项上,或者使用功能表项的关键字母来选择该功能表项。然而,从程式写作者的角度来看,启用、禁用和无效化功能表项的功能是不同的。Windows只为启用的功能表项向程式发送WM_COMMAND讯息。要让选项变得无效,可以把那些功能表项禁用和无效化。如果您想让使用者知道选择是无效的,那么您可以让一个功能表项无效化。
功能表结构
当您建立或改变程式中的功能表时,把顶层功能表和每一个突现式功能表想像成各自独立的功能表是有用的。顶层功能表有一个功能表代号,在顶层功能表中的每一个突现式功能表也有它自己的功能表代号。系统功能表(也是一个突现式功能表)也有功能表代号。
功能表中的每一项都有三个特性。第一个特性是功能表中显示什么,它可以是字串或点阵图。第二个特性是WM_COMMAND讯息中Windows发送给程式的功能表ID,或者是在使用者选择功能表项时Windows显示的突现式功能表的代号。第三个特性是功能表项的属性,包括是否被禁用、无效化或被选中。
定义功能表
要使用Developer Studio来给程式资源描述档添加功能表,可以从 Insert 功能表中选择 Resource 并选择 Menu (或者您可能已经知道了)。然後,您可以用交谈式的方式定义功能表。功能表中每一项都有一个相关的 Menu Item Properties 对话方块,指出该项目的字串。如果选中了 Pop-up 核取方块,该项目就会呼叫一个突现