Функция SetClassLongPtrA (winuser.h)
Заменяет указанное значение с указанным смещением в дополнительной памяти класса или структуре WNDCLASSEX для класса, которому принадлежит указанное окно.
Синтаксис
ULONG_PTR SetClassLongPtrA(
[in] HWND hWnd,
[in] int nIndex,
[in] LONG_PTR dwNewLong
);
Параметры
[in] hWnd
Тип: HWND
Дескриптор окна и, косвенно, класса, которому принадлежит окно.
[in] nIndex
Тип: int
Значение, которое требуется заменить. Чтобы задать значение в памяти дополнительного класса, укажите положительное отсчитываемое от нуля смещение байтов заданного значения. Допустимые значения находятся в диапазоне от нуля до количества байтов дополнительной памяти класса минус восемь; Например, если вы указали 24 или более байтов дополнительной памяти класса, значение 16 будет индексом третьего целого числа. Чтобы задать значение, отличное от структуры WNDCLASSEX , укажите одно из следующих значений.
Значение | Значение |
---|---|
|
Задает размер (в байтах) дополнительной памяти, связанной с классом . Установка этого значения не изменяет количество выделенных дополнительных байтов. |
|
Задает размер (в байтах) дополнительной памяти окна, связанной с каждым окном в классе . Установка этого значения не изменяет количество выделенных дополнительных байтов. Сведения о том, как получить доступ к этой памяти, см. в разделе SetWindowLongPtr. |
|
Заменяет дескриптор фоновой кистью, связанной с классом . |
|
Заменяет дескриптор курсором, связанным с классом . |
|
Заменяет дескриптор значком, связанным с классом . |
|
Извлекает дескриптор небольшого значка, связанного с классом . |
|
Заменяет дескриптор модулю, который зарегистрировал класс . |
|
Заменяет указатель на строку имени меню. Строка определяет ресурс меню, связанный с классом . |
|
Заменяет биты стиля оконного класса. |
|
Заменяет указатель на процедуру окна, связанную с классом . |
[in] dwNewLong
Тип: LONG_PTR
Значение на замену.
Возвращаемое значение
Тип: ULONG_PTR
Если функция выполнена успешно, возвращаемое значение является предыдущим значением указанного смещения. Если это значение не было задано ранее, возвращаемое значение равно нулю.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если для замены процедуры окна используется функция SetClassLongPtr и индекс GCLP_WNDPROC , процедура окна должна соответствовать рекомендациям, указанным в описании функции обратного вызова WindowProc .
Вызов Метода SetClassLongPtr с индексом GCLP_WNDPROC создает подкласс класса window, который влияет на все окна, созданные впоследствии с помощью класса . Приложение может подкласс системного класса, но не должно быть подклассом класса окна, созданного другим процессом.
Зарезервируйте дополнительную память класса, указав ненулевое значение в элементе cbClsExtra структуры WNDCLASSEX, используемой с функцией RegisterClassEx .
Используйте функцию SetClassLongPtr с осторожностью. Например, можно изменить цвет фона для класса с помощью SetClassLongPtr, но это изменение не сразу перекрашивать все окна, принадлежащие классу.
Примечание
Заголовок winuser.h определяет SetClassLongPtr как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-windowclass-l1-1-2 (представлено в Windows 10 версии 10.0.10240) |
См. также раздел
Основные понятия
Справочные материалы