WNDCLASSEXA 结构 (winuser.h)

包含窗口类信息。 它与 RegisterClassExGetClassInfoEx 函数一起使用。

WNDCLASSEX 结构类似于 WNDCLASS 结构。 有两个区别。 WNDCLASSEX 包括 cbSize 成员,该成员指定结构的大小,以及 hIconSm 成员,该成员包含与窗口类关联的小图标的句柄。

语法

typedef struct tagWNDCLASSEXA {
  UINT      cbSize;
  UINT      style;
  WNDPROC   lpfnWndProc;
  int       cbClsExtra;
  int       cbWndExtra;
  HINSTANCE hInstance;
  HICON     hIcon;
  HCURSOR   hCursor;
  HBRUSH    hbrBackground;
  LPCSTR    lpszMenuName;
  LPCSTR    lpszClassName;
  HICON     hIconSm;
} WNDCLASSEXA, *PWNDCLASSEXA, *NPWNDCLASSEXA, *LPWNDCLASSEXA;

成员

cbSize

类型:UINT

此结构的大小(以字节为单位)。 将此成员设置为 sizeof(WNDCLASSEX)。 在调用 GetClassInfoEx 函数之前,请务必设置此成员。

style

类型:UINT

类样式(s)。 此成员可以是 类样式的任意组合。

lpfnWndProc

类型:WNDPROC

指向窗口过程的指针。 必须使用 CallWindowProc 函数来调用窗口过程。 有关详细信息,请参阅 WindowProc

cbClsExtra

类型:int

要按照窗口类结构分配的额外字节数。 系统将字节初始化为零。

cbWndExtra

类型:int

在窗口实例之后分配的额外字节数。 系统将字节初始化为零。 如果应用程序使用 WNDCLASSEX 注册通过使用资源文件中的 CLASS 指令创建的对话框,则必须将此成员设置为 DLGWINDOWEXTRA

hInstance

类型:HINSTANCE

包含类的窗口过程的实例的句柄。

hIcon

类型:HICON

类图标的句柄。 此成员必须是图标资源的句柄。 如果此成员 NULL,则系统提供默认图标。

hCursor

类型:HCURSOR

类游标的句柄。 此成员必须是游标资源的句柄。 如果此成员 NULL,则每当鼠标移动到应用程序的窗口中时,应用程序都必须显式设置光标形状。

hbrBackground

类型:HBRUSH

类背景画笔的句柄。 此成员可以是用于绘制背景的画笔的句柄,也可以是颜色值。 颜色值必须是以下标准系统颜色之一(值 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
使用 UnregisterClass注销类时,系统会自动删除类背景画笔。 应用程序不应删除这些画笔。

当此成员 NULL时,每当请求应用程序在其工作区中绘制时,都必须绘制其自己的背景。 若要确定是否必须绘制背景,应用程序可以处理 WM_ERASEBKGND 消息,也可以测试由 beginPaint 函数 填充的 PAINTSTRUCT 结构的 fErase 成员。

lpszMenuName

类型:LPCTSTR

指向以 null 结尾的字符串的指针,该字符串指定类菜单的资源名称,因为名称显示在资源文件中。 如果使用整数来标识菜单,请使用 MAKEINTRESOURCE 宏。 如果此成员 NULL,则属于此类的窗口没有默认菜单。

lpszClassName

类型:LPCTSTR

指向以 null 结尾的字符串或原子的指针。 如果此参数是 atom,则它必须是上一次调用 RegisterClassRegisterClassEx 函数创建的类 atom。 原子必须位于 lpszClassName的低序单词中;高序单词必须为零。

如果 lpszClassName 是字符串,则指定窗口类名。 类名称可以是注册到 RegisterClassRegisterClassEx的任何名称,也可以是预定义的控件类名称。

lpszClassName 的最大长度为 256。 如果 lpszClassName 大于最大长度,则 RegisterClassEx 函数将失败。

hIconSm

类型:HICON

与窗口类关联的小图标的句柄。 如果此成员 NULL,系统将搜索由 hIcon 成员指定的图标资源,以获取要用作小图标的相应大小的图标。

言论

注意

winuser.h 标头将 WNDCLASSEX 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
标头 winuser.h (包括 Windows.h)

另请参阅

概念

GetClassInfoEx

参考

RegisterClassEx

UnregisterClass

窗口类