SetClassLong

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

SetClassLong函数将指定偏移处的指定的32位(长)值替换为指定窗口所属类的额外类存储器或WNDCLASS结构。

DWORD SetClassLong(

HWND 【的hWnd】,//窗口的句柄
INT 【参数nIndex】,//值的变化索引
LONG 【dwNewLong】//新值
); 

参数

【的hWnd】

标识窗口,间接地标识窗口所属的类。

【参数nIndex】

指定要替换的32位值。要在额外的类内存中设置一个32位值,请指定要设置的值的正零,基于零的字节偏移量。有效值范围为零,通过额外类内存的字节数减去4;例如,如果您指定了12个或更多字节的额外类内存,则值为8将成为第三个32位整数的索引。要从WNDCLASS结构中设置任何其他值,请指定以下值之一:

行动
GCL_CBCLSEXTRA设置与类相关联的额外内存的大小(以字节为单位)。设置此值不会更改已分配的额外字节数。
GCL_CBWNDEXTRA设置与类中每个窗口相关联的额外窗口内存的大小(以字节为单位)。设置此值不会更改已分配的额外字节数。有关如何访问此内存的信息,请参阅SetWindowLongSetWindowWord.
GCL_HBRBACKGROUND替换与该类相关联的背景画笔的句柄。
GCL_HCURSOR替换与该类关联的光标的句柄。
GCL_HICON替换与该类关联的图标的句柄。
GCL_HMODULE替换注册该类的模块的句柄。
GCL_MENUNAME替换菜单名称字符串的地址。字符串标识与该类相关联的菜单资源。
GCL_STYLE替换窗口类风格位。
GCL_WNDPROC替换与该类相关联的窗口过程的地址。

【dwNewLong】

指定替换值。

返回值

如果函数成功,则返回值是指定的32位整数的前一个值。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

如果使用SetClassLong函数和GCL_WNDPROC索引替换窗口过程,则窗口过程必须符合WindowProc回调函数描述中指定的准则。

使用GCL_WNDPROC索引调用SetClassLong会创建一个窗口类的子类,该子类影响随后使用该类创建的所有窗口。应用程序不应该对由其他进程创建的窗口进行子类化。

通过在与RegisterClass功能一起使用的WNDCLASS结构的cbClsExtra成员中指定非零值来保留额外的类内存。

请仔细使用SetClassLong功能。例如,可以使用SetClassLong更改类的背景颜色,但是这种更改不会立即重新绘制属于该类的所有窗口。

也可以看看

GetClassLong, GetClassWord, RegisterClass, SetClassWord, SetWindowLong, SetWindowWord, WindowProc, WNDCLASS