|
式定义的识别字通常称为「位元旗标」。通常我们只使用少数的视窗类别样式。HELLOWIN中用到的这两个识别字表示,所有依据此类别建立的视窗,每当视窗的水平方向大小(CS_HREDRAW)或者垂直方向大小(CS_VREDRAW)改变之後,视窗要完全重画。改变HELLOWIN的视窗大小,可以看到字串仍然显示在视窗的中央,这两个识别字确保了这一点。不久我们就将看到视窗讯息处理程式是如何得知这种视窗大小的变化的。
WNDCLASS结构的第二个栏位由以下叙述进行初始化:
wndclass.lpfnWndProc = WndProc ;
这条叙述将这个视窗类别的视窗讯息处理程式设定为WndProc,即HELLOWIN.C中的第二个函式。这个过程将处理依据这个视窗类别建立的所有视窗的全部讯息。在C语言中,像这样在结构中使用函式名时,真正提供的是指向函式的指标。
下面两个栏位用於在视窗类别结构和Windows内部保存的视窗结构中预留一些额外空间:
wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ;
程式可以根据需要来使用预留的空间。HELLOWIN没有使用它们,所以设定值为0。否则,和匈牙利表示法所指示的一样,这个栏位将被当成「预留的位元组数」。(在第七章的程式CHECKER3将使用cbWndExtra栏位。)
下一个栏位就是程式的执行实体代号(它也是WinMain的参数之一):
wndclass.hInstance = hInstance ;
叙述
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
为所有依据这个视窗类别建立的视窗设置一个图示。图示是一个小的点阵图图像,它对使用者代表程式,将出现在Windows工作列中和视窗的标题列的左端。在本书的後面,您将学习如何为您的Windows程式自订图示。现在,为了方便起见,我们将使用预先定义的图示。
要取得预先定义图示的代号,可以将第一个参数设定为NULL来呼叫LoadIcon。在载入程式写作者自订的图示时(图示应该存放在磁片上的.EXE程式档案中),这个参数应该被设定为程式的执行实体代号hInstance。第二个参数代表图示。对於预先定义图示,此参数是以IDI开始的识别字(「ID代表图示」),识别字在WINUSER.H中定义。IDI_APPL |