WNDCLASSEX

【勇芳软件工作室】汉化HomePreviousNext

WNDCLASSEX结构包含窗口类信息。它与RegisterClassExGetClassInfoEx 功能一起使用。

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

typedef struct _WNDCLASSEX { // wc

UINT cbSize;

UINT style;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

HICON hIconSm;

} WNDCLASSEX;

会员

CBSIZE

指定此结构的大小(以字节为单位)。将此成员设置为sizeof(WINDOWCLASSEX)。在调用GetClassInfoEx函数之前,请确保设置此成员。

样式

指定类样式。可以使用按位OR(|)运算符组合样式。该成员可以是以下值的任意组合:

行动
CS_BYTEALIGNCLIENT将窗口的客户区域对准字节边界(x方向),以提高绘图操作期间的性能。该风格影响窗口的宽度及其在显示屏上的水平位置。
CS_BYTEALIGNWINDOW将窗口对齐在字节边界(x方向)上,以增强涉及移动或调整窗口大小的操作过程中的性能。该风格影响窗口的宽度及其在显示屏上的水平位置。
CS_CLASSDC分配一个设备上下文以由该类中的所有窗口共享。因为窗口类是特定于进程的,所以多线程应用程序的多个线程可能会创建同一个类的窗口。线程也可能尝试同时使用设备上下文。当这种情况发生时,操作系统只允许其中一个线程成功完成其绘图操作。
CS_DBLCLKS当用户在属于该类的窗口中的光标位于用户双击鼠标时,双击消息到窗口过程。
CS_GLOBALCLASS允许应用程序创建类的窗口,无论传递给CreateWindowCreateWindowEx函数的【的hInstance】参数的值如何。如果不指定此样式,传递给CreateWindow(或CreateWindowEx)函数的【的hInstance】参数必须与传递给RegisterClass函数的【的hInstance】参数相同。
 您可以通过在动态链接库(DLL)中创建窗口类并在注册表中的以下键下列出DLL的名称来创建全局类:
 HKEY_LOCAL_MACHINE\软件
\微软\Windows NT\
CurrentVersion\视窗\APPINIT_DLLS
 无论何时进程启动,操作系统将在新进程的上下文中加载指定的DLL,然后再调用该进程中的主要函数。DLL必须在初始化过程中注册该类,并且必须指定CS_GLOBALCLASS样式。
CS_HREDRAW如果移动或尺寸调整改变了客户区域的宽度,则重绘整个窗口。
CS_NOCLOSE禁用系统菜单上的关闭命令。
CS_OWNDC为类中的每个窗口分配唯一的设备上下文。
CS_PARENTDC将子窗口的剪切区域设置为父窗口的剪切区域,以便孩子可以绘制父窗口。具有CS_PARENTDC样式位的窗口从系统的设备上下文缓存中接收常规设备上下文。它不给孩子父设备上下文或设备上下文设置。指定CS_PARENTDC增强了应用程序的性能。
CS_SAVEBITS作为位图保存屏幕图像的一部分被窗口遮蔽。当窗口被删除时,Windows使用保存的位图重新创建屏幕图像。Windows在其原始位置显示位图,并且如果位图所使用的内存未被丢弃,并且其他屏幕操作未使存储的映像无效,则Windows不会向Windows隐藏的窗口发送WM_PAINT消息。此风格对于在其他屏幕活动发生之前短暂显示,然后删除的小窗口(例如,菜单或对话框)非常有用。这种风格增加了显示窗口所需的时间,因为操作系统必须首先分配内存来存储位图。
CS_VREDRAW如果移动或尺寸调整改变了客户区域的高度,则重绘整个窗口。

lpfnWndProc

指向窗口程序。有关详细信息,请参阅WindowProc.

cbClsExtra

指定在窗口类结构之后分配的额外字节数。操作系统将字节初始化为零。

cbWndExtra

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

的hInstance

标识此类的窗口过程所在的实例。

惠康

标识类图标。该成员必须是图标资源的句柄。如果该成员为NULL,则只要用户最小化应用程序的窗口,应用程序就必须绘制图标。

HCURSORpt

标识类游标。该成员必须是游标资源的句柄。如果此成员为NULL,则只要鼠标移动到应用程序的窗口中,应用程序就必须显式设置游标形状。

看一看hbrBackgroundlb

识别课堂背景画笔。该成员可以是用于画背景的物理画笔的句柄,也可以是一个颜色值。颜色值必须是以下标准系统颜色之一(值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消息或测试由BeginPaint函数填充的PAINTSTRUCT结构的FERASE成员。

lpszMenuName

指向一个空值终止的字符串,用于指定类菜单的资源名称,名称显示在资源文件中。如果使用整数来标识菜单,请使用MAKEINTRESOURCE宏。如果此成员为NULL,属于此类的Windows没有默认菜单。

lpszClassName

指向一个空值终止的字符串或是一个原子。如果这个参数是一个原子,它必须是由前一次调用GlobalAddAtom函数创建的全局原子。原子,一个16位的值必须在lpszClassName的低位字中。高阶字必须为零。

如果lpszClassName是字符串,则它指定窗口类名称。

hIconSm

处理与窗口类相关联的小图标。如果此成员为NULL,系统将搜索由惠康成员指定的图标资源,以获取适当大小的图标,以将其用作小图标。

也可以看看

GetClassInfoEx, RegisterClassEx, WNDCLASS