|
准系统功能表有下列选项:Restore、Move、Size、Minimize、Maximize和Close。它们产生wParam分别等於SC_RESTORE、SC_MOVE、SC_SIZE、SC_MINIMUM、SC_MAXIMUM和SC_CLOSE的WM_SYSCOMMAND讯息。尽管Windows程式一般不这样做,但是您可以自己处理这些讯息,而不把它们留给DefWindowProc。您也可以使用下面所述的方法来禁止或者除掉系统功能表的标准选项。Windows文件中还介绍了一些系统功能表的标准附加项目,这些附加项目使用识别字SC_NEXTWINDOW、SC_PREVWINDOW、SC_VSCROLL、SC_HSCROLL和SC_ARRANGE。您也许会发现,在一些应用程式中将这些命令加入系统功能表是合适的。
改变功能表
我们已经看到了如何使用AppendMenu函式为程式定义功能表以及将功能表项加入到系统功能表中。在Windows
3.0之前,您不得不被迫使用ChangeMenu函式来完成这种工作。ChangeMenu函式有很多功能,至少在当时,整个Windows中它是最复杂的函式之一。现在,许多函式都比ChangeMenu函式还要复杂,并且ChangeMenu的功能被分解为五个新的函式:
如果功能表项是一个突现式功能表,那么DeleteMenu和RemoveMenu之间的区别就很重要。DeleteMenu清除突现式功能表,但RemoveMenu不清除它。
其他功能表命令
下面是在使用功能表时一些有用的函式。
当您改变顶层功能表项时,直到Windows重画功能表列时才显示所做的改变。您可以通过下列呼叫来强迫执行功能表更新:
注意,DrawMenuBar的参数是视窗代号而不是功能表代号。
您可以使用下列命令来获得突现式功能表的代号 |