窗口类(好像是wndclass窗口类结构)定义了窗口的一般特征,因此可以使用同一窗口类创建许多不同的窗口。
而调用CreateWindow创建窗口时,可能指定有关窗口的更详细的信息。
注:新的Windows程序员有时会混淆窗口类和窗口之间的区别,以及为什么一个窗口的所有特征不能被一步到位地指定。实际上,以这种方式分开这些风格信息是非常方便的。例如,所有的按钮窗口都可以基于同样的窗口类来创建。与这个窗口类相关的窗口过程位于Windows内部。由窗口类来负责处理按钮的键盘和鼠标输入,并定义按钮在屏幕上的外观形象。从这一点看来,所有的按钮都是以同样的方式工作的。但是并非所有的按钮都是一样的。它们可以有不同的大小,不同的屏幕位置,以及不同的正文串。下面这样一些特征是窗口定义的一部分,而不是窗口类定义的。
hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
参数一:szAppName, // window class name
这是程序注册的窗口类名称,这就是如何把我们正在创建的窗口与一个窗口类相联结的方式
参数二:TEXT ("The Hello Program"), // window caption
这是窗口的标题,即显示在窗口的标题栏上的信息
参数三:WS_OVERLAPPEDWINDOW, // window style
这是窗口风格,其宏定义如下:
#define WS_OVERLAPPEDWINDOW ( //多种窗口类型的组合,即如下样式的组合
WS_OVERLAPPED | / //产生一个层叠的窗口,一个层叠的窗口有一个标题栏和一个边框。
WS_CAPTION | / //创建一个有标题栏的窗口。
WS_SYSMENU | / //创建一个在标题栏上带有系统菜单的窗口,要和WS_CAPTION类型一起使用。
WS_THICKFRAME | / //创建一个具有可调边框的窗口。
WS_MINIMIZEBOX | / //创建一个具有最小化按钮的窗口,必须同时设定WS_ SYSMENU类型。
WS_MAXIMIZEBOX) //创建一个具有最大化按钮的窗口,必须同时设定WS_ SYSMENU类型。
参数四 和 参数五
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
在WINUSER.H中的宏定义如下所示
#define CW_USEDEFAULT ((int)0x80000000)
为“初始x位置”和“初始y位置”的参数,指定了窗口左上角相对于屏幕左上角的初始位置。其中CW_USEDEFAULT定义为0x80000000,默认情况下,大概使用默认的位置。(好像以像素为单位,x为水平,y为竖直)
参数六 和 参数七
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
指定窗口的宽度和高度(同上,即好像以像素为单位,x为水平,y为竖直)
参数八: NULL, // parent window handle
为“父窗口句柄”,一般为NULL,如果有窗口之间存在父子关系,则子窗口总是出现在父窗口的上面。但应用程序窗口出现在桌面窗口的上面时,不必为调用CreateWindow而找出桌面窗口的句柄。
参数九:NULL, // window menu handle
为“窗口菜单句柄”,如没有菜单则为NULL
参数十:hInstance, // program instance handle
为“程序实例句柄”,设置为实例句柄,它是作为WinMain的参数传递给这个程序的。
参数十一:NULL // creation parameters
“创建参数”指针,设置为NULL,可以用这个指针访问以后想要引用的程序中的数据
最后CreateWindow调用返回被创建的窗口的句柄,该句柄存放在变量hwnd中,它被定义为HWND类型(“窗口句柄类型”)。注:Windows中的每个窗口都有一个句柄,程序用句柄来引用窗口。许多Windows函数需要使用hwnd作为参数,这样,Windows才能知道函数是针对哪个窗口的。如果一个程序创建了许多窗口,则每个窗口均有一个句柄。窗口句柄是Windows程序处理的最重要的句柄之一。