马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
注:本文档由 无符号整形 翻译,小甲鱼校对。
原文链接 -> 传送门
函数功能:
SetClassLongPtr 函数用于在窗口的额外存储空间的指定偏移位置设置一个 32 位值,该存储空间在窗口所属的 WNDCLASSEX 结构中定义。
注意:为了兼容 32 位和 64 位的 Windows 操作系统,写代码时请使用 SetClassLongPtr 函数。在 32 位的 Windows 系统中被编译时, SetClassLongPtr 函数被自动定义为调用 SetClassLong 函数。
API 函数原型:
注释:_In_ 说明该参数是输入的。ULONG_PTR WINAPI SetClassLongPtr(
_In_ HWND hWnd,
_In_ int nIndex,
_In_ LONG_PTR dwNewLong
);
参数解析:
参数 | 含义 | hWnd | 指向一个窗口的句柄,函数会间接地获取窗口所属的类 | nIndex | 1. 在额外类存储空间中设置 32 位值,应指定一个大于或等于 0 的偏移量
2. 有效值范围在 0 到额外的类的内存的字节数减四。例如,如果您指定了 12 字节或更多的额外的类储存空间, 则应设为第三个 32 位整数的索引位 8
3. 如果要从 WNDCLASSEX 结构设置其他值,需要指定以下值之一:
值 | 含义 | GCL_CBCLSEXTRA
(-20) | 1. 设置与类相关的额外内存的字节大小
2. 设置这个值不会改变已经分配额外的字节数 | GCL_CBWNDEXTRA
(-18) | 1. 设置类中的每个窗口相关的额外窗口内存大小,以字节为单位
2. 设置这个值不会改变已经分配额外的字节数。有关如何访问此内存的信息,请参阅 SetWindowLongPtr 函数 | GCLP_HBRBACKGROUND
(-10) | 替换与类相关的画刷的句柄 | GCLP_HCURSOR
(-12) | 替换与类相关的光标的句柄 | GCLP_HICON
(-14) | 替换与类相关的图标的句柄 | GCLP_HICONSM
(-34) | 替换与类相关的小图标的句柄 | GCLP_HMODULE
(-16) | 替换注册该类的模块的句柄 | GCLP_MENUNAME
(-8) | 替换菜单名字符串的地址,该字符串标识了与类有关的菜单资源 | GCLP_STYLE
(-26) | 替换窗口类的风格位 | GCLP_WNDPROC
(-24) | 1. 替换窗口过程函数的地址,或者代表窗口过程函数的地址的句柄
2. 您必须使用 CallWindowProc 函数来调用窗口过程 |
| dwNewLong | 指定要替换的值 |
返回值:
1. 如果函数调用成功,返回值是结构中原来的 32 位值(如果该值没有被预先设定,返回值是 0);
2. 如果函数调用失败,返回值是 0。
获取有关错误的更多信息,请调用 GetLastError 函数。
备注:
1. 如果调用 SetClassLongPtr 函数和 GCLP_WNDPROC 索引值来替换窗口过程,新的窗口过程必须与 WindowProc 回调函数中所规定的原型一致。
2. 通过调用 SetClassLongPtr 函数和 GCLP_WNDPROC 索引值将影响此类随后创建的所有窗口的窗口类的子类。应用程序可以继承系统类,但不应是由另一个进程创建的窗口类的子类。
3. 通过调用 RegisterClassEx 函数,将 WNDCLASSEX 结构中的 cbClsExtra 成员设为一个非 0 值来保留额外的储存空间。
4. 使用 SetClassLongPtr 函数要小心。比如,可以通过使用 SetClassLongPtr 函数来改变类的背景画刷颜色,但是这种改变不会立即生效,直到属于该类的窗体下次重绘才会起作用。除非使用 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 | SetClassLongPtrW (Unicode) 和 SetClassLongPtrA (ANSI) |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|