Функция 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, SetWindowLongPtrSetWindowLong, 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки
Переведено 16.12.2004 15:41 ©Copyright V. Sokovikov
Hosted by uCoz