原文链接 -> 传送门
WNDCLASSEX 结构
WNDCLASSEX 结构包含窗口类的信息。这个结构被 RegisterClassEx 和 GetClassInfoEx 函数所使用。
WNDCLASSEX 结构与 WNDCLASS 结构类似。但有两处不同:WNDCLASSEX 结构包含用来指定该结构体大小的 cbSize 成员,和一个 hIconSm 成员,hIconSm 这个成员指定与窗口类关联的小图标的句柄。
结构原型:
typedef struct tagWNDCLASSEX {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;
结构解析:
|
成员 |
含义 |
|
cbSize |
1. 指定这个结构占用的字节数 |
|
style |
指定窗口类型,各种“类风格”(详见下方 ↓)可以使用按位或操作符组合起来 |
|
lpfnWndProc |
指定窗口过程(必须是回调函数) |
|
cbClsExtra |
预留的额外空间,一般为 0 |
|
cbWndExtra |
预留的额外空间,一般为 0 |
|
hInstance |
应用程序的实例句柄 |
|
hIcon |
为所有基于该窗口类的窗口设定一个图标 |
|
hCursor |
为所有基于该窗口类的窗口设定一个鼠标指针 |
|
hbrBackground |
指定窗口背景色 |
|
lpszMenuName |
指定窗口菜单 |
|
lpszClassName |
指定窗口类名 |
|
hIconSm |
1. 指定与窗口类关联的小图标的句柄 |
style 类风格解析
|
类风格 |
含义 |
|
CS_VREDRAW |
移动或者调整窗口的高度(垂直方向)时,重绘整个窗口 |
|
CS_HREDRAW |
移动或者调整窗口的宽度(水平方向)时,重绘整个窗口 |
|
CS_DBLCLKS |
当用户光标在窗口内双击时,允许发送双击消息给窗口过程 |
|
CS_OWNDC |
给予每个窗口实例分配一个唯一的 DC(注意,尽管这样是很方便,但它必须慎重使用,因为每个 DC 大约要占 800 个字节的内存) |
|
CS_CLASSDC |
该窗口类的所有窗口实例都共享一个窗口类 DC |
|
CS_PARENTDC |
1. 将子窗口的裁剪区域设置到父窗口的 DC 中去,这样子窗口便可以在父窗口上绘制自身。(注意,这是子窗口从系统缓存中获取 DC,而不是使用父窗口的 DC。) |
|
CS_NOCLOSE |
禁止系统菜单的关闭选项 |
|
CS_SAVEBITS |
1. 以位图形式保存被该窗口遮挡的屏幕部分,当给窗口移动以后,系统便可以用该保存的位图恢复屏幕移动的相应部分,从而系统不用向被该窗口遮挡的窗口发送 WM_PAINT 消息 |
|
CS_BYTEALIGNCLIENT |
在字节边界上(在 x 方向上)定位窗口的用户区域的位置 |
|
CS_BYTEALIGNWINDOW |
在字节边界上(在 x 方向上)定位窗口的位置 |
|
CS_GLOBALCLASS |
1. 当调用 CreateWindow 或 CreateWindowEx 函数来创建窗口时允许它的 hInstance 参数和注册窗口类时传递给 RegisterClass 的 hInstance 参数不同 |
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Winuser.h (包含于 Windows.h) |
|
Unicode and ANSI names |
WNDCLASSEXW (Unicode) 和 WNDCLASSEXA (ANSI) |




