|
学习提示:如果没有C语言基础可以通过下方链接学习:
0基础C语言学习与训练
0基础C++学习与训练
在我们学习Windows项目开发之前,需要先学习Windows应用程序的框架,而该框架是由C与C++语言构成,
所以,需要大家至少具备C语言的基础。
经过前面的学习,我们已经认识了(Windows应用程序的框架),同时,也学习了该框架的入口点WinMain函数,
接下来,我们就继续学习(Windows应用程序框架)中的(窗口类的信息)。
窗口类的信息:其实,它是一个由Windows提供的(结构体)用于描述(窗口信息),当我们通过程序对这个
(结构体)中的成员进行设置后,就可以设定将要创建的窗口对应的内容。包括:窗口背景颜色、图标、光标、窗口中
是否有菜单、窗口的显示风格、该窗口对应哪一个应用程序,就是我们自己编写的Windows应用程序,以及,在窗口上
发生相应事件时,对应的事件处理函数,都在该(窗口类的信息)中设置。
窗口类信息的原型如下:
typedef struct _WNDCLASSEX
{
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
}WNDCLASSEX;
窗口类信息的原型分析:
1、成员一:cbSize,用于接收(该结构体的大小)。
2、成员二:style,描述窗口一般属性的样式标志。
常用标志见下表:
标志 |
说明 |
| CS_HREDRAW |
当移动或改变窗口宽度时,刷新整个窗口。 |
| CS_VREDRAW |
当移动或改变窗口的高度时,刷新整个窗口中。 |
| CS_OWNDC |
为该类中的每个窗口分配一个单值的设备描述表。 |
| CS_DBLCLKS |
当双击鼠标时向窗口程序发送一个双击信息,同时,光标位于窗口中。 |
| CS_PARENTDC |
在父窗口中设置一个子窗口的剪切区,以便子窗口可以画在父窗口中。 |
| CS_SAVEBITS |
在一个窗口中保存用户图像,以便在该窗口被遮挡、移动时不必每次刷新屏但是,会占用更多的内存,并且人工进行同样的操作要慢得多。 |
| CS_NOCLOSE |
禁止系统菜单上的关闭命令。 |
上表中的标志,可以通过(或运算符)把多个标志组合在一起使用。
3、成员三:lpfnWndProc,用于指向一个回调函数,而什么是回调函数,以及,它的作用,我们会在后面的章节中
再为大家详细介绍。
另外,这个回调用函数就是(Windows应用程序框架)里面的(事件处理器),如果,大家记不清楚的话,可以回顾
前面学习过的Windows项目开发系列(应用程序框架分析)。
所以,为什么窗口中发生的事件,如鼠标的点击事件所产生的消息,就会发送到(事件处理器)中,原因就是在该成员
中指定了对应的(回调函数)即事件处理器。
所以,从一步一步的学习中,我们就可以慢慢地了解到(Windows应用程序框架)中的每个部分是如何联系起来的。
4、成员四与五:cbClsExtra与cbWndExtra,这两个成员用于指示Windows把附加的运行时间信息保存于
Windows类中的某些单元而设计的。但在使用时,可以简单地把它们设置为0就可以了。
5、成员六:hinstance,用于指向一个(应用程序的句柄)。而它就是从WinMain函数的(第一个参数)传递进来的,
如果大家记不清楚的话,可以回顾前面学习过的(WinMain的分析)。
6、成员七:hicon,用于指向一个(图标的句柄)。可以加载一个你自己的图标或系统的图标。
7、成员八:hCursor,用于指向一个(光标的句柄)。
8、成员九:hbrBackground,用于指向一个(窗口画刷的句柄)。该成员可以指向不同颜色的画刷,从而,可以为窗口的背景设置不同的颜色。
9、成员十:lpszMenuName,用于指向一个(窗口菜单的名字)。如果没有窗口菜单,可以设置为NULL空值。
10、成员十一:lpszClassName,用于指向一个Windows类名的字符串,而这个(类名)就代表着当前这个(窗口类信息),即通过该(类名)就可以找到(窗口类信息)的设置内容。
11、成员十二:hiconSm,用于指向一个(应用程序的小图标句柄)。
当我们了解完(窗口类信息)的原型以后,在往后的时间中,就可以通过代码对以上的成员进行设置,从而,确定将要
创建的窗口(属性与内容),而相关的代码实现部分,将会在后面的章节中再为大家详细学习。
小结:
(1)通过窗口类中的成员三:lpfnWndProc,就指向了一个回调用函数,即(事件处理器),从而,该窗口就可以与
框架中的(事件处理器)产生了联系。
(2)通过窗口类中的成员六:hinstance,用于指向一个(应用程序的句柄)。从而,该窗口对应哪一个
(Windows应用程序)就可以知道。同时,该(应用程序的句柄)是从WinMain入口函数的第1个参数传递进来的,
从而,窗口类与WinMain入口函数产生了联系,所以,该Windows类在(Windows应用程序框架)中就起到了
承上启下的作用。
(3)在学习的过程中,出现的(句柄、回调函数)等的内容,我们会在后面的章节中,再为大家作详细的介绍。
>>>下载Windows应用程序开发代码 |