Функция SetClassLong
Функция SetClassLong заменяет указанное 32-разрядное (long) значение при заданном смещении в дополнительной памяти класса или в структуре WNDCLASSEX на класс, которому указанное окно принадлежит.
Обратите внимание! на то, что эта функция была заменена функцией SetClassLongPtr. Чтобы написать код, который является совместимым и с 32-разрядными, и с 64-разрядными версиями Microsoft ® Windows ®, используйте SetClassLongPtr. |
Синтаксис
DWORD SetClassLong( HWND hWnd, int nIndex, LONG dwNewLong ); |
Параметры
hWnd
[in] Дескриптор окна и, косвенно, класс которому окно принадлежит.nIndex
[in] Устанавливает заменяемое 32-разрядное значение. Чтобы установить 32-разрядное значение в дополнительную память класса, задайте положительное, отсчитываемое от нуля смещение байта устанавливаемого значения. Допустимые значения находятся в диапазоне от нуля до числа байтов дополнительной памяти класса, минус четыре; например, если бы Вы определили 12 или больше байтов дополнительной памяти класса, значение 8 будет индексом третьего 32-разрядноого целого числа. Чтобы установить любое другое значение из структуры WNDCLASSEX, установите одно из ниже перечисленных значений.
Значение | Предназначение |
GCL_CBCLSEXTRA | Устанавливает размер дополнительной памяти, связанной с классом, в байтах. |
GCL_CBWNDEXTRA | Устанавливает размер дополнительной памяти окна, связанной с каждым окном в классе, в байтах. Установка этого значения не изменяет число дополнительных байт, назначенных ранее. За информацией о том, как получить доступ к этой памяти, обратитесь к функции GetWindowLong. |
GCL_HBRBACKGROUND | Заменяет дескриптор кисти фона, связанной с классом. |
GCL_HCURSOR | Заменяет дескриптор курсора, связанного с классом. |
GCL_HICON | Заменяет дескриптор значка, связанного с классом. |
GCL_HICONSM | Заменяет дескриптор маленького значка, связанного с классом. |
GCL_HMODULE | Заменяет дескриптор модуля, который зарегистрировал класс. |
GCL_MENUNAME | Заменяет адрес строки с именем меню. Строка идентифицирует ресурс меню, связанный с классом. |
GCL_STYLE | Заменяет данные о битах стиля класса окна. |
GCL_WNDPROC | Заменяет адрес оконной процедуры связанной с классом . |
dwNewLong
[in] Задает значение замены.Возвращаемое значение
Если функция завершается успешно, возвращаемое значение - предыдущее значение определенного 32-разрядного целого числа. Если значение(величина) не было предварительно установлено, возвращаемое значение равняется нулю.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Если Вы используете функцию SetClassLong и индекс GCL_WNDPROC, чтобы заменить оконную процедуру, оконная процедура должна соответствовать руководящим принципам, указанным в описании функции повторного вызова WindowProc.
Вызов SetClassLong индексом с GCL_WNDPROC создает подкласс класса окна, который воздействует на на все окна, созданные классом впоследствии. Приложение может системный класс поделить на подклассы, но оно не должно делить на подклассы класс окна, созданный другим процессом.
Резервируйте дополнительную память класса, определяя ненулевое значение в члене cbClsExtra структуры WNDCLASSEX, используемой с функцией RegisterClassEx.
Используйте функцию SetClassLong осторожно. Например, можно изменить цвет фона класса, используя SetClassLong, но это изменение немедленно не перекрашивает все окна, принадлежащие классу.
Функция SetClassLongW поддерживается программой Microsoft Layer for Unicode (MSLU).
Обратите внимание! на то, что последующие вызовы этой функции будут переписывать результат работы предыдущего вызова, так что Вы должны сохранить какой-либо результат, который Вы хотите использовать позже. |
Чтобы использовать эту версию, Вы должны добавить некоторые файлы в ваше приложение, как изложено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Пример
Пример, см. в статье Показ значка.
Смотри также
Обзор Классы окна, Функции, используемые классами окна, GetClassLong RegisterClassEx, SetWindowLongPtr, SetWindowLong, WindowProc, WNDCLASSEX
Размещение и совместимость SetClassLong |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |