原文链接 -> 传送门
函数功能:
SetClassLong 函数用于在窗口的额外存储空间的指定偏移位置设置一个 32 位值,该存储空间在窗口所属的 WNDCLASSEX 结构中定义。
注意:此功能已被 SetClassLongPtr 函数取代。为了兼容 32 位和 64 位的 Windows 操作系统,请使用 SetClassLongPtr 函数。
API 函数原型:
注释:_In_ 说明该参数是输入的。
DWORD WINAPI SetClassLong( _In_ HWND hWnd, _In_ int nIndex, _In_ LONG dwNewLong );
参数解析:
|
参数 |
含义 |
||||||||||||||||||||||
|
hWnd |
指向一个窗口的句柄,函数会间接地获取窗口所属的类 |
||||||||||||||||||||||
|
nIndex |
1. 在额外类存储空间中设置 32 位值,应指定一个大于或等于 0 的偏移量
|
返回值:
1. 如果函数调用成功,返回值是结构中原来的 32 位值(如果该值没有被预先设定,返回值是 0);
2. 如果函数调用失败,返回值是 0。
获取有关错误的更多信息,请调用 GetLastError 函数。
备注:
1. 如果使用 SetClassLong 函数和 GCL_WNDPROC 索引值来替换窗口过程,新的窗口过程必须与 WindowProc 回调函数中所规定的原型一致。
2. 通过调用 RegisterClassEx 函数,将 WNDCLASSEX 结构中的 cbClsExtra 成员设为一个非零值来保留额外的储存空间。
3. 使用 SetClassLong 函数要小心。比如,可以通过使用 SetClassLong 函数来改变类的背景画刷颜色,但是这种改变不会立即生效,直到属于该类的窗体下次重绘。除非使用 UpdateWindow 函数强制让窗口更新。
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Winuser.h (包含于 Windows.h) |
|
Library |
User32.lib |
|
DLL |
User32.dll |
|
Unicode and ANSI names |
SetClassLongW (Unicode) 和 SetClassLongA (ANSI) |




