SetClassLong()函数

函数功能:该函数替换在额外类存储空间的指定偏移地址的32位长整型值,或替换指定窗口所属类的WNDCLASSEX结构。

参数:

hWnd:窗口句柄及间接给出的窗口所属的类。

nlndex:指定将被替换的32位值。在额外类存储空间中设置32位值,应指定一个大于或等于0的偏移量。

有效值的范围从0到额外类的存储空间的字节数一4;例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要设置WNDCLASSEX结构中的任何值,指定下面值之一:

GCL_CBCLSEXTRA:设置与类相关的尺寸的字节大小。设定该值不改变己分配的额外字节数。

GCL_CBWNDEXTRA:设置与类中的每一个窗口相关的尺寸的字节大小。设定该值不改变已分配额外字节数。查看如何进入该内存,参看SetWindowLOng。

GCL_HERBACKGROUND:替换与类有关的背景刷子的句柄。

GCL_HCURSOR:替换与类有关的光标的句柄。GCL_HICON:替换与类有关的图标的句柄。

GCL_HMODULE:替换注册类的模块的句柄。GCL_STYLE:替换窗口类的风格位。

CGL_MENUNAME :替换菜单名字符串的地址。该字符串标识与类有关的菜单资源。

GCL_WNDPROC :替换与窗口类有关的窗口过程的地址。

dwNewLong:指定替换值。

返回值:如果函数成功,返回值是指定的32位整数的原来的值;如果未事先设定,返回值为0。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。

备注;如果使用SetClassLong函数和GCL_WNDPROC索引值来替换窗口过程,窗口过程必须与WindowProccallback函数中的描述的guideline一致。

以带GCL_WNDPROC索引值的SetClassLong函数创建的一个窗口类的的子类将会影响所有随后以该类创建的窗口。应用程序可以创建一个系统类的子类,但是不能创建由其他进程创建的类的子类。

通过使用RegisterClassEx函数将WNDCLASSEX结构中的cbWndExtra单元指定为一个非零值来保留额外的的类存储空间。

小心使用SetClassLong函数。例如,可以通过使用SetClassLong来改变类的背景颜色,但是这个改变Windows CE:nlndex参数是一个字节偏移量但必须是4的倍数。Unaligned不支持。

不支持在nlndex参数中的标准的CGL_*值,只有一个例外,如果目标设各支持鼠标,则可以在nlndex参数中指定CGL_HCURSOR。

注意支持鼠标的WindowsCE版本包含Iconcurs和Mcursor组件而不是lcon和Cursor组件。

速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib;Unicode:在Windows NT 上实现为Unicode和ANSI两种版本。