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

Нет

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

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz