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


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

Заменяет указанное 32-битовое значение (long) с указанным смещением в дополнительную память класса или структуру WNDCLASSEX для класса, которому принадлежит указанное окно.

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

Синтаксис

DWORD SetClassLongA(
  [in] HWND hWnd,
  [in] int  nIndex,
  [in] LONG dwNewLong
);

Параметры

[in] hWnd

Тип: HWND

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

[in] nIndex

Тип: int

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

Значение Значение
GCL_CBCLSEXTRA
–20
Задает размер (в байтах) дополнительной памяти, связанной с классом . Установка этого значения не изменяет количество выделенных дополнительных байтов.
GCL_CBWNDEXTRA
–18
Задает размер (в байтах) дополнительной памяти окна, связанной с каждым окном в классе . Установка этого значения не изменяет количество выделенных дополнительных байтов. Сведения о том, как получить доступ к этой памяти, см. в разделе SetWindowLong.
GCL_HBRBACKGROUND
–10
Заменяет дескриптор фоновой кистью, связанной с классом .
GCL_HCURSOR
-12
Заменяет дескриптор курсором, связанным с классом .
GCL_HICON
-14
Заменяет дескриптор значком, связанным с классом .
GCL_HICONSM
-34
Замените дескриптор небольшим значком, связанным с классом .
GCL_HMODULE
-16
Заменяет дескриптор модулю, который зарегистрировал класс .
GCL_MENUNAME
–8
Заменяет адрес строки имени меню. Строка определяет ресурс меню, связанный с классом .
GCL_STYLE
-26
Заменяет биты стиля оконного класса.
GCL_WNDPROC
-24
Заменяет адрес процедуры окна, связанной с классом .

[in] dwNewLong

Тип: LONG

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

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

Тип: DWORD

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

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

Комментарии

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

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

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

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

Примеры

Пример см. в разделе Отображение значка.

Примечание

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

Требования

   
Минимальная версия клиента 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)

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

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

GetClassLong

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

RegisterClassEx

SetClassLongPtr

SetWindowLong

WNDCLASSEX

Классы окон

Windowproc