(УстановкаОкнаСДальнимСмещением)
Функция SetWindowLong изменяет атрибуты определяемого окна. Функция также устанавливает 32-разрядное (длинное) значение при заданном смещении в дополнительном пространстве памяти об окне.
Синтаксис
LONG SetWindowLong ( HWND hWnd, // дескриптор окна int nIndex, // значение смещения, которое устанавливается LONG dwNewLong //новое значение );
Параметры
hWnd
Идентифицирует окно и, косвенно, класс, которому окно принадлежит.
nIndex
Определяет значение смещения, отсчитываемое от нуля, которое будет установлено. Допустимые значения находятся в диапазоне от нуля до числа байтов дополнительного пространства в памяти, минус 4; например, если бы Вы установили 12 или большее количество байтов памяти дополнительного пространства, значение 8 было бы индексом к третьему 32-разрядному целому числу. Чтобы установить любое другое значение, определите одно из следующих значений:
Следующие значения также доступны, когда параметр hWnd идентифицирует диалоговое окно:
dwNewLong
Устанавливает восстановленное значение.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - предыдущее значение заданного 32-разрядного целого числа. Если функция не выполняет задачу, возвращаемое значение нулевое. Чтобы получать расширенные данные об ошибках, вызовите GetLastError. Если предыдущее значение заданного 32-разрядного целого числа нулевое, и функция завершается успешно, возвращаемое значение нулевое, но функция не очищает последние данные об ошибках. Это затрудняет определение успеха или сбоя. Чтобы бороться с этим, Вы должны очистить последние данные об ошибках, вызывая SetLastError (0) перед вызовом SetWindowLong. Тогда, функциональный сбой будет обозначен возвращаемым значением нуля и результата GetLastError, который является отличным от нуля.
Замечания
Функция SetWindowLong не выполняет задачу, если окно, заданное параметром hWnd не принадлежит тому же самому процессу, что и поток вызова. Если Вы используете функцию SetWindowLong и индекс GWL_WNDPROC, чтобы заменить оконную процедуру, оконная процедура должна соответствовать рекомендациям, заданным в описании функции повторного вызова WindowProc. Вызов SetWindowLong с индексом GWL_WNDPROC создает подкласс класса окна, которое используется, чтобы создать окно. Прикладная программа не должна быть подклассом окна, созданного другим процессом. Функция SetWindowLong создает подкласс окна, заменяя оконную процедуру, связанную с отдельным окном, вынуждая Windows вызвать новую оконную процедуру вместо предыдущей. Прикладная программа должна передавать любые сообщения, не обработанные новой оконной процедурой к предыдущей оконной процедуре, вызывая CallWindowProc. Это позволяет прикладной программе создавать цепочку оконных процедур. Резервное дополнительное пространство в памяти, устанавливает значение отличное от нуля в элементе cbWndExtra структуры WNDCLASS, используемой с функцией RegisterClass. Вы не должны вызвать SetWindowLong с индексом GWL_HWNDPARENT, чтобы заменить родителя дочернего окна. Взамен, используйте функцию SetParent.
Смотри также
CallWindowProc, GetWindowLong, GetWindowWord, RegisterClass, SetParent, SetWindowWord, WindowProc, WNDCLASS.
Размещение и совместимость SetWindowLong
Windows NT Да Win95 Да Win32s Да Импортируемая библиотека user32.lib Заголовочный файл winuser.h Unicode WinNT Замечания по платформе Не имеется