Функция SetClassLongA (winuser.h)
Заменяет указанное 32-разрядное (длинное) значение по указанному смещением в память дополнительного класса или структуру WNDCLASSEX для класса, к которому принадлежит указанное окно.
Синтаксис
DWORD SetClassLongA(
[in] HWND hWnd,
[in] int nIndex,
[in] LONG dwNewLong
);
Параметры
[in] hWnd
Тип: HWND
Дескриптор окна и, косвенно, класс, которому принадлежит окно.
[in] nIndex
Тип: int
Значение, которое необходимо заменить. Чтобы задать 32-разрядное значение в памяти дополнительного класса, укажите положительное отсчитываемое от нуля смещение байтов заданного значения. Допустимые значения находятся в диапазоне от нуля до количества байтов памяти дополнительного класса, минус четыре; Например, если вы указали 12 или более байтов дополнительной памяти класса, значение 8 будет индексом в третье 32-разрядное целое число. Чтобы задать любое другое значение из структуры WNDCLASSEX, укажите одно из следующих значений.
Ценность | Значение |
---|---|
|
Задает размер в байтах дополнительной памяти, связанной с классом. Установка этого значения не изменяет количество уже выделенных дополнительных байтов. |
|
Задает размер в байтах дополнительной памяти окна, связанной с каждым окном в классе. Установка этого значения не изменяет количество уже выделенных дополнительных байтов. Сведения о том, как получить доступ к этой памяти, см. в SetWindowLong. |
|
Заменяет дескриптор фоновой кистью, связанной с классом. |
|
Заменяет дескриптор курсором, связанным с классом. |
|
Заменяет дескриптор значком, связанным с классом. |
|
Замените дескриптор небольшим значком, связанным с классом. |
|
Заменяет дескриптор модулем, который зарегистрировал класс. |
|
Заменяет адрес строки имени меню. Строка определяет ресурс меню, связанный с классом. |
|
Заменяет биты стиля класса окна. |
|
Заменяет адрес процедуры окна, связанной с классом. |
[in] dwNewLong
Тип: LONG
Значение замены.
Возвращаемое значение
Тип: DWORD
Если функция выполнена успешно, возвращаемое значение является предыдущим значением указанного 32-разрядного целого числа. Если значение не было задано ранее, возвращаемое значение равно нулю.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Если для замены процедуры окна используется функция setClassLong
Вызов 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) |
См. также
концептуальные
Справочник