Страница 52 из 69
Функция SetWindowLong (УстановкаОкнаСДальнимСмещением) Функция SetWindowLong изменяет атрибуты определяемого окна. Функция также устанавливает 32-разрядное (длинное) значение при заданном смещении в дополнительном пространстве памяти об окне. Синтаксис LONG SetWindowLong ( HWND hWnd,// дескриптор окна int nIndex,// значение смещения, которое устанавливается LONG dwNewLong //новое значение );
Параметры hWnd Идентифицирует окно и, косвенно, класс, которому окно принадлежит. nIndex Определяет значение смещения, отсчитываемое от нуля, которое будет установлено. Допустимые значения находятся в диапазоне от нуля до числа байтов дополнительного пространства в памяти, минус 4; например, если бы Вы установили 12 или большее количество байтов памяти дополнительного пространства, значение 8 было бы индексом к третьему 32-разрядному целому числу. Чтобы установить любое другое значение, определите одно из следующих значений: - GWL_EXSTYLE - Устанавливает новый расширенный стиль окна.
- GWL_STYLE - Устанавливает новый стиль окна.
- GWL_WNDPROC - Устанавливает новый адрес для оконной процедуры.
- GWL_HINSTANCE - Устанавливает новый дескриптор экземпляра прикладной программы.
- GWL_ID - Устанавливает новый идентификатор окна.
- GWL_USERDATA - Устанавливает 32-разрядное значение, связанное с окном. Каждое окно имеет соответствующее 32-разрядное значение, предназначенное для использования прикладной программой, которая создала окно.
Следующие значения также доступны, когда параметр hWnd идентифицирует диалоговое окно: - DWL_DLGPROC - Устанавливает новый адрес процедуры диалогового окна.
- DWL_MSGRESULT - Устанавливает возвращаемое значение сообщения, обработанного в процедуре диалогового окна.
- DWL_USER - Устанавливает новую дополнительную информацию, которая является частной для прикладной программы, типа дескрипторов или указателей.
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 UnicodeWinNT Замечания по платформеНе имеется
|