SetWindowLong

SetWindowLong функция изменяет атрибут указанного окна. Функция также устанавливает (длинная) 32-разрядное значение с указанным смещением в дополнительное окно память окна.

(SetWindowLong) Лонг HWND  hWnd, / / обработать окнаintnIndex, / / смещение значения для заданияДЛИННЫЕ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 не вступят в силу до тех пор, пока функция 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.

QuickInfo

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

Index