Функция SetClassLongPtr
Функция SetClassLongPtr заменяет указанное значение при заданном смещении в дополнительной памяти класса или структуре в WNDCLASSEX класса, которому указанное окно принадлежит.
Эта функция заменяет функцию SetClassLong. Чтобы написать код, который является совместимым и с 32-разрядным и с 64-разрядным Microsoft ® Windows ®, используйте функцию SetClassLongPtr.
Синтаксис
ULONG_PTR SetClassLongPtr( HWND hWnd, int nIndex, LONG_PTR dwNewLong ); |
Параметры
hWnd
[in] Дескриптор окна и, косвенно, класс, которому принадлежит окно.nIndex
[in] Определяет значение для замены. Чтобы установить значение в дополнительную память класса, определите положительное, отсчитываемое от нуля смещение байта устанавливаемого значения. Допустимые значения находятся в диапазоне от нуля до числа байтов дополнительной памяти класса, минус восемь; например, если Вы определили 24 или больше байт дополнительной памяти класса, значение 16 будет индексом третьего целого число. Чтобы установить другое значение, а не из структуры WNDCLASSEX, определите одно из ниже перечисленных значений.
Значение | Предназначение |
GCL_CBCLSEXTRA | Устанавливает размер дополнительной памяти, связанной с классом, в байтах. Установка этого значения не изменяет число дополнительных ранее распределенных байт. |
GCL_CBWNDEXTRA | Устанавливает размер дополнительной памяти окна, связанной с каждым окном в классе, в байтах. Установка этого значения не изменяет число ранее распределенных дополнительных байт. Информацию о том, как получить доступ к этой памяти, см. в описании функции SetWindowLongPtr. |
GCLP_ HBRBACKGROUND | Заменяет дескриптор кисти фона, связанной с классом. |
GCLP_HCURSOR | Заменяет дескриптор курсора, связанного с классом. |
GCLP_HICON | Заменяет дескриптор значка, связанного с классом. |
GCLP_HICONSM | Извлекает дескриптор маленького значка, связанного с классом. |
GCLP_HMODULE | Заменяет дескриптор модуля, который зарегистрировал класс. |
GCLP_MENUNAME | Заменяет указатель на строку с именем меню. Символьная строка идентифицирует ресурс меню, связанный с классом. |
GCL_STYLE | Заменяет биты стиля класса окна. |
GCLP_WNDPROC | Заменяет указатель на оконную процедуру, связанную с классом. |
dwNewLong
[in] Задает значение замены.Возвращаемое значение
Если функция завершается успешно, возвращаемое значение - предыдущая величина указанного смещения. Если оно не было предварительно установлено, возвращаемое значение равняется нулю.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Если Вы используете функцию SetClassLongPtr и индекс GCLP_WNDPROC, чтобы заменить оконную процедуру, эта процедура должна соответствовать нормам, указанным в описании функции повторного вызова WindowProc.
Вызов функции SetClassLongPtr с индексом GCLP_WNDPROC создает подкласс класса окна, который воздействует на все окна, впоследствии созданные с классом. Приложение может поделить на подклассы системный класс, но не должно делить на подклассы класс окна, созданный другим процессом.
Резервируйте дополнительную память класса, определяя ненулевое значение в члене cbClsExtra структуры WNDCLASSEX, используемой с функцией RegisterClassEx.
Используйте функцию SetClassLongPtr с осторожностью. Например, имеется возможность изменить цвет фона класса, используя SetClassLongPtr, но это изменение не сразу перекрасит все окна, принадлежащие классу.
Смотри также
Обзор Классы окна, Функции, используемые классами окна, GetClassLongPtr, RegisterClassEx, SetWindowLongPtr, WindowProc, WNDCLASSEX
Размещение и совместимость SetClassLongPtr |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |