WNDCLASSEX窗口类原型如下
1 typedef struct WNDCLASSEX { 2 UINT cbSize; 3 UINT style; 4 WNDPROC lpfnWndProc; 5 int cbClsExtra; 6 int cbWndExtra; 7 HINSTANCE hInstance; 8 HICON hIcon; 9 HCURSOR hCursor; 10 HBRUSH hbrBackground; 11 LPCTSTR lpszMenuName; 12 LPCTSTR lpszClassName; 13 HICON hIconSm; 14 } WNDCLASSEX, *PWNDCLASSEX;
其十二个成员意义如下
1:cbSize,表示窗口的大小,取值一般为sizeof(WNDCLASSEX);
2:style,表示窗口的类型,取值是系统定义好的一组宏,例如:
CS_BYTEALIGNCLIENT
窗口的客户区域以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍
CS_BYTEALIGNWINDOW
窗口以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍
CS_CLASSDC
分配一个设备环境并被类中的所有窗体共享。它是可以适用于一个应用程序的若干线程创建的一个相同类的窗体。当多个线程试图同时使用相同的设备环境时,系统只允许
一个线程成功地进行绘图操作
CS_DBLCLKS
当用户双击窗口时,将向窗口函数发送鼠标双击消息
CS_GLOBALCLASS
指定此窗体类是一个应用程序全局类。应用程序全局类是由一个在进程中对所有模块有效的exe或dll注册的窗体类
CS_HREDRAW
如果窗口的位置或宽度发生改变,将重绘窗口
CS_NOCLOSE
窗口中的“关闭”按钮不可见
CS_OWNDC
为同一个窗口类中的每个窗口创建一个唯一的设备上下文
CS_PARENTDC
设置子窗口中剪下的矩形区域到父窗口中,以使子窗口可以在父窗口上绘图。指定该风格可以提高应用程序的性能
CS_SAVEBITS
把被窗口遮掩的屏幕图像作为位图保存起来。当该窗口被移动时,Windows操作系统使用被保存的位图来重建屏幕图像
CS_VREDRAW
如果窗口的位置或高度改变,将重绘窗口
3:lpfnWndProc是最重要的成员,当鼠标键盘在该窗口上操作时,该窗口收到了这个消息。此时他的lpfnWndProc指向一个回调函数,该窗口将参数送到回调函数,由回调函数执行动作,例如
wc.lpfnWndProc = MyWindowProc; // MyWindowProc是一个回调函数
4:cbClsExtra,指定紧跟在窗口类结构后的附加字节数,即给类额外预留的空间,
5:cbWndExtra:指定紧跟在窗口实例的附加字节数,即给实例额外预留的空间
6:hInstance,该窗口的句柄
7:hIcon,该窗口图标的句柄
8:hCursor,该窗口光标形式的句柄
9:hbrBackground,背景画刷的句柄
10:lpszMenuName,指向菜单的句柄
11:.lpszClassName,指向类名称的句柄
12:hIconSm,这个图标显示的是窗口在任务栏处显示的图标