Функция 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

Указатель на процедуру окна. Этот указатель и идентификатор подкласса однозначно идентифицируют обратный вызов этого подкласса. Прототип функции обратного вызова см. в разделе SUBCLASSPROC.

[in] uIdSubclass

Тип: UINT_PTR

Идентификатор подкласса. Этот идентификатор вместе с процедурой подкласса однозначно идентифицирует подкласс. Чтобы удалить подкласс, передайте процедуру подкласса и это значение в функцию RemoveWindowSubclass . Это значение передается процедуре подкласса в параметре uIdSubclass.

[in] dwRefData

Тип: DWORD_PTR

DWORD_PTR ссылочные данные. Значение этого значения определяется вызывающим приложением. Это значение передается процедуре подкласса в параметре dwRefData. С каждой комбинацией дескриптора окна, процедуры подкласса и uIdSubclass связана другая dwRefData.

Возвращаемое значение

Тип: BOOL

Значение TRUE , если обратный вызов подкласса успешно установлен; в противном случае — FALSE.

Комментарии

Обратные вызовы подклассов идентифицируются по сочетанию адреса обратного вызова и идентификатора подкласса, определенного вызывающим абонентом. Если пара обратного вызова и пары идентификаторов еще не установлены, эта функция устанавливает подкласс. Если пара уже установлена, эта функция просто обновляет эталонные данные.

Каждый обратный вызов может хранить один DWORD_PTR ссылочных данных, которые передаются в функцию обратного вызова при вызове для фильтрации сообщений. Для обратного вызова не выполняется подсчет ссылок; он может многократно вызывать SetWindowSubclass , чтобы изменить значение своего элемента ссылочных данных.

Предупреждение Вспомогательные функции подклассов нельзя использовать для подкласса окна в потоках.
 

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header commctrl.h
Библиотека Comctl32.lib
DLL Comctl32.dll (версия 5.8 или более поздняя)
Набор API ext-ms-win-shell-comctl32-window-l1-1-0 (появилось в Windows 10, версия 10.0.14393)

См. также раздел

DefSubclassProc

GetWindowSubclass

RemoveWindowSubclass