SetWindowLong функция изменяет атрибут указанного окна. Функция также устанавливает (длинная) 32-разрядное значение с указанным смещением в дополнительное окно память окна.
(SetWindowLong) Лонг HWND hWnd, / / обработать окнаintnIndex, / / смещение значения для заданияДЛИННЫЕdwNewLong / / новое значение);
| Значение | Действия |
|---|---|
| GWL_EXSTYLE | Задает новый расширенный стиль окна. |
| GWL_STYLE | Задает новый стиль окна. |
| GWL_WNDPROC | Задает новый адрес для процедуры окна. |
| GWL_HINSTANCE | Задает новый дескриптор экземпляра приложения. |
| GWL_ID | Задает новый идентификатор окна. |
| GWL_USERDATA | Задает 32-битное значение, связанное с окном. Каждое окно имеет соответствующее 32-битное значение, предназначенные для использования в приложение, создавшее окна. |
Доступны следующие значения также когда hWnd параметр идентифицирует диалоговое:
| Значение | Действия |
|---|---|
| DWL_DLGPROC | Устанавливает новый адрес процедуру диалогового окна. |
| DWL_MSGRESULT | Заносит в возвращаемое значение сообщения обрабатываются в процедуру диалогового окна. |
| DWL_USER | Устанавливает новую дополнительную информацию, которая является частным для приложения, таких как дескрипторы или указатели. |
Если функция выполнена успешно, возвращаемое значение является предыдущее значение заданного 32-битового.
Если вызов функции был неуспешен, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Если предыдущее значение заданного 32-разрядного целого числа равно нулю, и функция успешно, возвращаемое значение равно нулю, но функция не очищает последние сведения об ошибке. Это делает его трудно определить успех или провал. Чтобы заниматься этим, следует снять последние сведения об ошибке путем вызова SetLastError(0) перед вызовом SetWindowLong. Затем функция отказа будет подаваться возвращаемое значение нулю и ненулевой результат GetLastError.
SetWindowLong функция не работает, если окно, указанной в параметре hWnd не принадлежит тот же процесс, вызывающий поток.
Некоторые окна данные кэшируются, так что изменения, внесенные с помощью SetWindowLong не вступят в силу до тех пор, пока функция SetWindowPos.
Если вы используете SetWindowLong с GWL_WNDPROC индексом для замены процедуру окна, Оконная процедура должна соответствовать руководящим принципам, указанных в описании функции обратного вызова WindowProc.
Если вы используете SetWindowLong с DWL_MSGRESULT индексом для задания возвращаемого значения для сообщения, обрабатываемые процедуру диалогового окна, следует возвращать TRUE непосредственно после этого. В противном случае если вызвать любую функцию, которая приводит в процедуре диалоговое окно Получение сообщения окна, сообщение вложенные окна может перезаписать возвращаемое значение, заданное с помощью DWL_MSGRESULT.
Вызов SetWindowLong с GWL_WNDPROC индексом создает подкласс класса окна, используемый для создания окна. Приложение может подкласс класса system, но если не подкласс класса окна, созданные другим процессом. Функция SetWindowLong создает подкласс окна, изменив процедуру окна, связанный с классом конкретного окна, вызывая системы для вызова новой процедуре окна вместо предыдущего. Приложение должно пройти все сообщения по процедуре окна предыдущей процедурой окна не обрабатывается путем вызова CallWindowProc. Это позволяет приложению создать цепь окна процедур.
Зарезервировать дополнительное окно памяти, указав ненулевое значение в cbWndExtra член WNDCLASSEX структуры, используется с функцией RegisterClassEx.
Не должна вызывать SetWindowLong с индексом GWL_HWNDPARENT, чтобы изменить родительский дочернего окна. Вместо этого используйте функцию SetParent.
Windows CE: Параметр nIndex должен быть кратен 4 байта.
Не выровненной доступ не поддерживается.
Следующие значения параметра nIndex не поддерживаются:
GWL_HINSTANCE
GWL_HWNDPARENT
GWL_USERDATA
Windows CE версии 2.0 и более поздних поддерживают значение DWL_DLGPROC в параметре nIndex , но не поддерживает Windows CE 1.0.
nbsp; Windows &NT: требует версии 3.1 или более поздней версии.
Windows:Требует Windows 95 или более поздней версии.
Windows CE:Требует версии 1.0 или более поздней версии.
Заголовок:Объявленные в winuser.h.
Импорта библиотеки:Используйте user32.lib.
Юникод:В версии Юникода и ANSI в Windows NT.
Обзор окна классов, функции класса окна, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX