SetWindowSubclass 函数 (commctrl.h)
安装或更新窗口子类回调。
语法
BOOL SetWindowSubclass(
[in] HWND hWnd,
[in] SUBCLASSPROC pfnSubclass,
[in] UINT_PTR uIdSubclass,
[in] DWORD_PTR dwRefData
);
参数
[in] hWnd
类型:HWND
正在子类化的窗口的句柄。
[in] pfnSubclass
类型: SUBCLASSPROC
指向窗口过程的指针。 此指针和子类 ID 唯一标识此子类回调。 有关回调函数原型,请参阅 SUBCLASSPROC。
[in] uIdSubclass
类型: UINT_PTR
子类 ID。 此 ID 与子类过程一起唯一标识子类。 若要删除子类,请将子类过程和此值传递给 RemoveWindowSubclass 函数。 此值传递到 uIdSubclass 参数中的子类过程。
[in] dwRefData
类型: DWORD_PTR
DWORD_PTR 引用数据。 此值的含义由调用应用程序确定。 此值将传递到 dwRefData 参数中的子类过程。 不同的 dwRefData 与窗口句柄、子类过程和 uIdSubclass 的每种组合相关联。
返回值
类型: BOOL
如果成功安装子类回调,则为 TRUE;否则为 FALSE。
注解
子类回调由回调地址和调用方定义的子类 ID 的组合标识。 如果尚未安装回调地址和 ID 对,则此函数将安装子类。 如果已安装对,则此函数仅更新引用数据。
每个回调可以存储引用数据的单个 DWORD_PTR ,当回调函数被调用以筛选消息时,该引用数据将传递给回调函数。 不对回调执行引用计数;它可能会重复调用 SetWindowSubclass 来更改其引用数据元素的值。
警告 不能使用子类化帮助程序函数跨线程对窗口进行子类化。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | commctrl.h |
Library | Comctl32.lib |
DLL | Comctl32.dll (版本 5.8 或更高版本) |
API 集 | Windows 10版本 10.0.14393 中引入的 ext-ms-win-shell-comctl32-window-l1-1-0 () |