什么是窗口类?
顾名思义,窗口类就是C++里面的一个类,这个类里面的变量是关于窗口的一些特性的,比如说:大小,图标,鼠标,回调函数等.
回调函数是窗口类中最需要了解的内容,回调函数也称为窗口过程.
窗口过程是用来处理用户的消息的,比如说鼠标按下会发生什么,显示一行文字?跳出一个新界面等.又比如说,键盘某个键按下会发生什么.具体的消息对应不同的宏,可以通过查表来引用.
回调函数的用法以后会详细讲.
下面是窗口类的各个成员:
typedef struct tagWNDCLASSA {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASSA, *PWNDCLASSA, *NPWNDCLASSA, *LPWNDCLASSA;
其中
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
在多字节编码和Unicode编码的定义是些许差别的,但使用的思路是差不多的.
Style
决定了窗口的风格,拉边框时是否进行重绘,是否禁用右上角的”x”等.
lpfnWndProc
是回调函数,也就用来处理消息的.注册窗口后就处于不断循环调用.
cbClsExtra
指定紧跟在窗口类结构后的附加字节数。(目前我也不知道干嘛用的)
cbWndExtra
指定紧跟在窗口事例后的附加字节数。如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,则必须把这个成员设成DLGWINDOWEXTRA。
hInstance
本窗口的句柄,也就是窗口的ID,每个窗口都有不同的ID,我们是根据窗口的ID来确定给哪个窗口发消息的.
hIcon
图标句柄,用来设置窗口的图标
hCursor
鼠标句柄,用来设置鼠标光标
hbrBackground
背景画刷句柄,用来设置背景色
lpszMenuName
指向菜单的指针
lpszClassName:
指向类名称的指针,也就是这个类的名字(为什么会有类名这个东西,目前我还不太清楚)
hIcon的用法:
1.加载系统默认图标:
对象名.hIcon=LoadIcon(NULL, IDI_INFORMATION);
2.加载用户自定义图标:
在工程的资源视图里右键添加
然后导入你想加载的图标
加载用户自定义图标的方法:
对象名.hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
图标文件的后缀是ico
鼠标样式文件的后缀是cur
hCursor的使用方法将会在以后说明
hbrBackground的使用方法:
对象名.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
上面只能设置系统固定的背景颜色,如果想设置用户自定义的颜色,以后也会提到
关于窗口类还有许多内容要补充,这篇文章先说明到这里.