Поделиться через


Функция SetClassLongPtrA (winuser.h)

Заменяет указанное значение по указанному смещением в памяти дополнительного класса или структуре WNDCLASSEX для класса, к которому принадлежит указанное окно.

Примечание Для написания кода, совместимого как с 32-разрядной, так и с 64-разрядной версией Windows, используйте SetClassLongPtr. При компиляции для 32-разрядной версии Windows SetClassLongPtr определяется как вызов функции SetClassLong

 

Синтаксис

ULONG_PTR SetClassLongPtrA(
  [in] HWND     hWnd,
  [in] int      nIndex,
  [in] LONG_PTR dwNewLong
);

Параметры

[in] hWnd

Тип: HWND

Дескриптор окна и, косвенно, класс, которому принадлежит окно.

[in] nIndex

Тип: int

Значение, которое необходимо заменить. Чтобы задать значение в памяти дополнительного класса, укажите положительное отсчитываемое от нуля смещение байтов заданного значения. Допустимые значения находятся в диапазоне от нуля до количества байтов дополнительной памяти класса, минус восемь; Например, если вы указали 24 или более байтов дополнительной памяти класса, значение 16 будет индексом в третье целое число. Чтобы задать значение, отличное от структуры WNDCLASSEX, укажите одно из следующих значений.

Ценность Значение
GCL_CBCLSEXTRA
-20
Задает размер в байтах дополнительной памяти, связанной с классом. Установка этого значения не изменяет количество уже выделенных дополнительных байтов.
GCL_CBWNDEXTRA
-18
Задает размер в байтах дополнительной памяти окна, связанной с каждым окном в классе. Установка этого значения не изменяет количество уже выделенных дополнительных байтов. Сведения о том, как получить доступ к этой памяти, см. в SetWindowLongPtr.
GCLP_ HBRBACKGROUND
-10
Заменяет дескриптор фоновой кистью, связанной с классом.
GCLP_HCURSOR
-12
Заменяет дескриптор курсором, связанным с классом.
GCLP_HICON
-14
Заменяет дескриптор значком, связанным с классом.
GCLP_HICONSM
-34
Извлекает дескриптор на маленький значок, связанный с классом.
GCLP_HMODULE
-16
Заменяет дескриптор модулем, который зарегистрировал класс.
GCLP_MENUNAME
-8
Заменяет указатель на строку имени меню. Строка определяет ресурс меню, связанный с классом.
GCL_STYLE
-26
Заменяет биты стиля класса окна.
GCLP_WNDPROC
-24
Заменяет указатель на процедуру окна, связанную с классом.

[in] dwNewLong

Тип: LONG_PTR

Значение замены.

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

Тип: ULONG_PTR

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

Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Если вы используете функцию SetClassLongPtr и индекс GCLP_WNDPROC для замены процедуры окна, процедура окна должна соответствовать рекомендациям, указанным в описании функции обратного вызова WindowPro c.

Вызов SetClassLongPtr с индексом GCLP_WNDPROC создает подкласс класса окна, который впоследствии влияет на все окна, созданные с помощью класса. Приложение может подкласс системного класса, но не должно подкласса класса окна, созданного другим процессом.

Зарезервируйте дополнительную память класса, указав ненулевое значение в элементе cbClsExtra члена структуры WNDCLASSEX, используемой с функцией RegisterClassEx.

Используйте функцию SetClassLongPtr с осторожностью. Например, можно изменить цвет фона для класса с помощью SetClassLongPtr, но это изменение не сразу перенастроит все окна, принадлежащие к классу.

Заметка

Заголовок winuser.h определяет SetClassLongPtr как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll
набор API ext-ms-win-ntuser-windowclass-l1-1-2 (представлено в Windows 10 версии 10.0.10240)

См. также

концептуальные

GetClassLongPtr

Справочник

RegisterClassEx

SetWindowLongPtr

WNDCLASSEX

классы окон

WindowProc