18 сент. 2010 г.

SetClassLong

Функция SetClassLong замещает указанное 32-битное значение в указанном смещении в дополнительной памяти класса или в структуре WNDCLASS для указанного окна.
DWORD SetClassLong(
    HWND hWnd, // дескриптор окна
    int nIndex, // индекс изменяемого значения
    LONG dwNewLong  // новое значение
   );
Параметры:
hWndОпределяет окно, для которого устанавливается информация.
nIndexОпределяет замещаемое 32-битное значение. Для установки 32-битного значения в дополнительной памяти класса, укажите позицию, вернее смещение этого значения. Для замещения любого другого значения из структуры WNDCLASS, укажите одно из следующих значений:

Значение:
Действие:
GCL_CBCLSEXTRAУстановить размер, в байтах, дополнительной памяти, которая ассоциируется с классом.
GCL_CBWNDEXTRAУстановить размер, в байтах, дополнительной памяти, которая ассоциируется с каждым окном в классе. Чтобы узнать, как получить доступ этой памяти, смотрите описание функций GetWindowLong и GetWindowWord.
GCL_HBRBACKGROUNDУстановить дескриптор кисти фона, которая ассоциируется с классом.
GCL_HCURSORУстановить дескриптор курсора, который ассоциируется с классом.
GCL_HICONУстановить дескриптор иконки, которая ассоциируется с классом.
GCL_HICONSMУстановить дескриптор маленькой иконки, которая ассоциируется с классом.
GCL_HMODULEУстановить дескриптор модуля, который зарегестрировал класс.
GCL_MENUNAMEУстановить адрес строки с именем меню. Эта строка определяет ресурс меню, который ассоциируется с классом.
GCL_STYLEУстановить биты стиля оконного класса.
GCL_WNDPROCУстановить адрес оконной процедуры, которая ассоциируется с классом.

Возвращаемые значения:
При успешном завершении, функция возвращает предыдущее 32-битное значение.
При ошибке возвращается ноль. Для получения дополнительной информации об ошибке, вызовите GetLastError.
Замечания:
Если вы используете функцию SetClassLong и индекс GCL_WNDPROC для замещения оконной процедуры, эта процедура должна соответствовать описанию функции обратного вызова WindowProc.
Вызывая SetClassLong с индексом GCL_WNDPROC, создается подкласс оконного класса, который воздействует на все окна, впоследствии созданных с классом. Приложение может не подклассировать окна, созднные другим процессом.
Используйте функцию SetClassLong уверенно. Например, если вы изменяете цвет вона для класса, то это изменение не перекрасит немедленно все окна, которые относятся к классу.
Смотрите также:
GetClassLongGetClassWord, RegisterClass, SetClassWordSetWindowLongSetWindowWord, WindowProc, WNDCLASS