WNDCLASS
结构WNDCLASS包含了被RegisterClass函数注册的窗口类的属性。
这个结构已经被RegisterClassEx函数所注册的WNDCLASSEX结构取代。但是如果你不需要设置小图标来关联窗口类,你仍然可以使用WNDCLASS结构和RegisterClass函数。
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
指定类的风格。这个成员可以是类风格(class style)的任意组合。
lpfnWndProc
指向窗口过程的指针。你必须使用CallWindowProc函数去调用窗口过程。更多信息参见WindowProc。
cbWndExtra
指定为下个窗口实例分配字节的数目。系统初始化为0。如果应用程序使用WNDCLASS结构注册了一个对话框,而这个对话框是资源文件中类指定符创建,那么要把这个值设定为DLGWINDOWEXTRA
hInstance
类窗口过程的实例句柄
hIcon
类图标句柄。这个成员的值必须是一个指向图标资源的句柄。如果这个成员值是NULL,系统会提供一个默认的图标。
hCursor
类光标句柄。这个成员的值必须是一个指向光标资源的句柄。如果这个成员值是NULL,那么当鼠标移动到应用程序窗口中时,应用程序必须明确的设定光标的形状。
hbrBackground
类背景画刷的句柄。这个成员可以是一个用来粉刷背景的物理画刷句柄,也可以是颜色值。颜色值必须是以下标准系统颜色之一(如果选择以下颜色值,则颜色值必须加1)。如果给定下列颜色值之一,你必须把这个值转换成HBRUSH类型:
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
COLOR_BTNTEXT
COLOR_CAPTIONTEXT
COLOR_GRAYTEXT
COLOR_HIGHLIGHT
COLOR_HIGHLIGHTTEXT
COLOR_INACTIVEBORDER
COLOR_INACTIVECAPTION
COLOR_MENU
COLOR_MENUTEXT
COLOR_SCROLLBAR
COLOR_WINDOW
COLOR_WINDOWFRAME
COLOR_WINDOWTEXT
当类没有用时,系统会自动删除类背景画刷。应用程序不应该删除这些画刷,因为一个类可以被应用程序的多个实例使用。
当这个成员是NULL时,应用程序必须自己在需要的时候粉刷自己的背景。为了确定什么时候适合粉刷背景,应用程序可以处理WM_ERASEBKGND消息,也可以测试BeginPain函数填充的结构PAINTSTRUCT的成员fErase。
lpszMenuName
指向字符串的指针,指定类菜单的资源名字,资源名字会出现在资源文件中。如果你使用一个整数来指定菜单,那么请使用宏MAKEINTRESOUCE。如果这个值为NULL,那么属于这个类的窗口将没有默认的菜单。
lpszClassName
指向字符串或atom的指针。如果这个参数是atom,那么必须是一个由RegisterClass或RegisterClassEx函数创建的类atom。atom必须在lpszClassName低字节段,高字节段必须是0。
如果这个参数是字符串,那么它指定窗口类的名字。类名可以是任意由RegisterClass或RegisterClassEx注册的名字,或预先定义的控制类名字。
结构WNDCLASS包含了被RegisterClass函数注册的窗口类的属性。
这个结构已经被RegisterClassEx函数所注册的WNDCLASSEX结构取代。但是如果你不需要设置小图标来关联窗口类,你仍然可以使用WNDCLASS结构和RegisterClass函数。
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
成员
指定类的风格。这个成员可以是类风格(class style)的任意组合。
lpfnWndProc
指向窗口过程的指针。你必须使用CallWindowProc函数去调用窗口过程。更多信息参见WindowProc。
cbWndExtra
指定为下个窗口实例分配字节的数目。系统初始化为0。如果应用程序使用WNDCLASS结构注册了一个对话框,而这个对话框是资源文件中类指定符创建,那么要把这个值设定为DLGWINDOWEXTRA
hInstance
类窗口过程的实例句柄
hIcon
类图标句柄。这个成员的值必须是一个指向图标资源的句柄。如果这个成员值是NULL,系统会提供一个默认的图标。
hCursor
类光标句柄。这个成员的值必须是一个指向光标资源的句柄。如果这个成员值是NULL,那么当鼠标移动到应用程序窗口中时,应用程序必须明确的设定光标的形状。
hbrBackground
类背景画刷的句柄。这个成员可以是一个用来粉刷背景的物理画刷句柄,也可以是颜色值。颜色值必须是以下标准系统颜色之一(如果选择以下颜色值,则颜色值必须加1)。如果给定下列颜色值之一,你必须把这个值转换成HBRUSH类型:
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
COLOR_APPWORKSPACE
COLOR_BACKGROUND
COLOR_BTNFACE
COLOR_BTNSHADOW
COLOR_BTNTEXT
COLOR_CAPTIONTEXT
COLOR_GRAYTEXT
COLOR_HIGHLIGHT
COLOR_HIGHLIGHTTEXT
COLOR_INACTIVEBORDER
COLOR_INACTIVECAPTION
COLOR_MENU
COLOR_MENUTEXT
COLOR_SCROLLBAR
COLOR_WINDOW
COLOR_WINDOWFRAME
COLOR_WINDOWTEXT
当类没有用时,系统会自动删除类背景画刷。应用程序不应该删除这些画刷,因为一个类可以被应用程序的多个实例使用。
当这个成员是NULL时,应用程序必须自己在需要的时候粉刷自己的背景。为了确定什么时候适合粉刷背景,应用程序可以处理WM_ERASEBKGND消息,也可以测试BeginPain函数填充的结构PAINTSTRUCT的成员fErase。
lpszMenuName
指向字符串的指针,指定类菜单的资源名字,资源名字会出现在资源文件中。如果你使用一个整数来指定菜单,那么请使用宏MAKEINTRESOUCE。如果这个值为NULL,那么属于这个类的窗口将没有默认的菜单。
lpszClassName
指向字符串或atom的指针。如果这个参数是atom,那么必须是一个由RegisterClass或RegisterClassEx函数创建的类atom。atom必须在lpszClassName低字节段,高字节段必须是0。
如果这个参数是字符串,那么它指定窗口类的名字。类名可以是任意由RegisterClass或RegisterClassEx注册的名字,或预先定义的控制类名字。