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


Функция 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 , процедура окна должна соответствовать рекомендациям, указанным в описании функции обратного вызова 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)

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

Основные понятия

GetClassLongPtr

Справочные материалы

RegisterClassEx

SetWindowLongPtr

WNDCLASSEX

Классы окон

Windowproc