|
参数wParam等於IDM_APP_EXIT时,它给自己发送一个WM_CLOSE讯息。这个讯息与DefWindowProc收到WM_SYSCOMMAND讯息且wParam等於SC_CLOSE时发送给视窗讯息处理程式的讯息相同。我们将在本章後面介绍POPPAD2时再仔细研究这个问题。
功能表设计规范
在MENUDEMO中的「 File 」和「 Edit 」突现式功能表的格式与其他Windows程式中的格式非常类似。Windows的目的之一是为使用者提供一种易懂的介面,而不要求使用者为每个程式重新学习基本操作方式。如果「 File 」和「 Edit 」功能表在每个Windows程式中看起来都一样,并且都使用同样的字母和Alt键来进行选择,那么当然有助於减轻使用者的学习负担。
除了「 File 」和「 Edit 」突现式功能表外,大多数Windows程式的功能表都是不同的。当设计一个功能表时,您应该看一看现有的Windows程式以尽量保持一致。当然,如果您认为别的程式是不对的,而您知道正确的方法,那么没有人能够阻止您。同时记住,修改一个功能表,通常只需要修改资源描述档而不必修改您的程式码。即使以後要改变功能表项的位置,也不会有多大的问题。
虽然您的程式功能表在顶层可以有MENUITEM叙述,但这是不合规范的,因为这样会很容易导致错误的选择。如果您要这样做,那么请在字串後面加一个惊叹号,表示功能表项不会启动突现式功能表。
较难的一种功能表定义方法
在程式的资源描述档中定义功能表,通常是在您的视窗中添加功能表的最简单方法,但不是唯一的方法。如果您没有使用资源描述档,那么可以使用CreateMenu和AppendMenu两个函式在程式中建立功能表。在您定义完功能表後,您可以将功能表代号发送给CreateWindow,或者使用SetMenu来设定视窗的功能表。
以下是具体的做法。CreateMenu简单地把一个代号传回给新功能表:
功能表一开始为空。AppendMenu将功能表项插入功能表中。您必须为顶层功能表项和每一个突现式功能表提供不同的功能表代号。突现式功能表是单独构成的,然後将突现式功能表代号插入 |