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 ()

另请参阅

DefSubclassProc

GetWindowSubclass

RemoveWindowSubclass