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


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

Заменяет указанное 32-разрядное (длинное) значение по указанному смещением в память дополнительного класса или структуру 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 SetClassLong и индекс GCL_WNDPROC, процедура окна должна соответствовать рекомендациям, указанным в описании функции обратного вызова WindowPro c.

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

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

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

Примеры

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

Заметка

Заголовок winuser.h определяет SetClassLong как псевдоним, который автоматически выбирает версию 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)

См. также

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

GetClassLong

Справочник

RegisterClassEx

SetClassLongPtr

SetWindowLong

WNDCLASSEX

классы окон

WindowProc