CreateWindow()

窗口类(好像是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程序处理的最重要的句柄之一。

你可能感兴趣的:(VC)