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