SetWindowPos

Функция SetWindowPos меняет размер, позицию и z порядок ребенка, всплывающее окно, или верхнего уровня окна. Ребенок, окна всплывающее и верхнего уровня упорядочиваются в соответствии с их появление на экране. Верхний окно получает высший ранг и является первым окном в Z-порядке.

 (BOOL SetWindowPos HWND  hWnd, / / дескриптор окнаHWNDhWndInsertAfter, / / обрабатывать порядка следованияint X, / / горизонтальное положениеint Y, / / вертикальное положение int cx, // width int cy, // heightUINTuFlags / / позиционирования окна флаги);
 

Параметры

hWnd
Дескриптор окна.
hWndInsertAfter
Дескриптор окна, чтобы предшествовать позиционированные окон в Z-порядке. Этот параметр должен быть дескриптор окна или одно из следующих значений:
Значение Значение
HWND_BOTTOM Помещает окно в нижней части Z-порядка. Если параметр hWnd идентифицирует верхний окно, окно теряет свой верхний статус и помещается в нижней части всех остальных окон.
HWND_NOTOPMOST Помещает окно прежде всего верхний windows (то есть, за все верхнего окна). Этот флаг не работает, если это уже не верхний окно.
HWND_TOP Помещает окно в верхней части Z-порядка.
HWND_TOPMOST Помещает окно прежде всего верхний windows. Окна придерживается своей позиции, верхний, даже когда он отключается.

Для получения дополнительных сведений о том, как используется этот параметр смотрите в следующем разделе замечания.

X
Определяет новое положение в левой части окна, в клиентских координатах.
Y
Определяет новое положение в верхней части окна, в клиентских координатах.
cx
Указывает новую ширину окна в пикселах.
cy
Определяет новую высоту окна в пикселах.
uFlags
Определяет окно Изменение размера и положения флаги. Этот параметр может быть комбинацией следующих значений:
Значение Значение
SWP_ASYNCWINDOWPOS Если вызывающий поток не имеет собственного окна, система передает запрос к потоку, владеющему окна. Это позволит предотвратить вызывающий поток блокировки выполнения, в то время как другие потоки обработки запроса.
SWP_DEFERERASE Создание WM_SYNCPAINT сообщения не.
SWP_DRAWFRAME Рисует рамку (определенная в описание класса окна) вокруг окна.
SWP_FRAMECHANGED Отправляет сообщение WM_NCCALCSIZE в окно, даже если размер окна не изменяется. Если этот флаг не указан, WM_NCCALCSIZE отправляется только при изменении размера окна.
SWP_HIDEWINDOW Скрывает окно.
SWP_NOACTIVATE Не активирует окно. Если этот флаг не установлен, окно активации и переехал в верхней части либо верхний-верхний группе или (в зависимости от настройки параметра hWndInsertAfter ).
SWP_NOCOPYBITS Удаляет все содержимое клиентской области. Если этот флаг не указан, допустимое содержимое клиентской области сохраняются и скопированы обратно в клиентской области после того, как окно размера или клемма.
SWP_NOMOVE Сохраняет текущую позицию (игнорирует параметры x и Y ).
SWP_NOOWNERZORDER Не изменяет положения окна-владельца в Z-порядке.
SWP_NOREDRAW Изменения не перерисовывать. Если этот флаг установлен, не перекраску любого вида происходит. Это относится к клиентской области, неклиентской области (включая строку заголовка и полосы прокрутки), и любой частью родительского окна обнаружили из окна перемещаются. Когда этот флаг установлен, приложение должно явно недействительной или перерисовать любой части окна и родительского окна, которое требуется перерисовка.
SWP_NOREPOSITION Же самое, что флаг SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Предотвращает получение сообщения WM_WINDOWPOSCHANGING окна.
SWP_NOSIZE Сохраняет текущий размер (игнорирует параметры cx и cy ).
SWP_NOZORDER Сохраняет текущий порядок Z (игнорирует параметр hWndInsertAfter ).
SWP_SHOWWINDOW Отображение окна.

Возвращаемые значения

Если функция выполнена успешно, возвращаемое значение не равно нулю.

Если вызов функции был неуспешен, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Примечания

Если установлен флаг SWP_SHOWWINDOW или SWP_HIDEWINDOW, окна не могут быть перемещены или размера.

Если вы изменили некоторые окна данных, с помощью SetWindowLong, необходимо вызвать SetWindowPos чтобы изменения вступили в силу. Используйте следующую комбинацию для uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Окно можно сделать верхнего окна, установив параметр hWndInsertAfter для HWND_TOPMOST и обеспечение того, чтобы не установлен флаг SWP_NOZORDER или устанавливая положение окна в Z-порядке таким образом, чтобы это выше любой существующий верхний windows. Когда не верхний окно переднего плана, его собственные окна также верхний. Ее владельцев, однако, не изменяются.

Если флаг ни SWP_NOACTIVATE, ни SWP_NOZORDER не задан (то есть, когда приложение запрашивает одновременно активации окна и изменить его позицию в последовательности Z), значение, указанное в hWndInsertAfter используется только в следующих случаях:

Приложение не может активировать неактивного окна без также привести его в начало Z-порядка. Приложения можно изменить положение активированного окна в Z-порядке без ограничений, или она может активировать окно и затем переместить его в верхнюю часть верхнего или не верхний окон.

Если окно верхнего клемма z порядка или после любого не верхний окна в нижнюю (HWND_BOTTOM), уже не верхний. Когда окно переднего плана не верхний, его владельцев и его собственные окна также не верхний windows.

Верхний окно может владеть верхнего окна, но не может произойти обратное. Сам по себе сделал верхнего окна, чтобы гарантировать, что все владел windows оставаться выше их владельцем является любое окно (например, диалоговое окно), принадлежащие в верхнем окне.

Если приложение не на переднем плане и должно быть на переднем плане, необходимо вызвать функцию SetForegroundWindow.

Windows CE: Если это видимый окном верхнего уровня, и флаг SWP_NOACTIVATE не указан, эта функция будет активировать окно. Если это текущее активное окно, и указывается либо SWP_NOACTIVATE или SWP_HIDEWINDOW флаг, активации передается другим видимым окно верхнего уровня.

Когда установлен флаг SWP_FRAMECHANGED в параметре nFlags этой функции Windows CE перерисовывает всю неклиентской области окна, которое может изменить размер клиентской области. Это единственный способ получить неклиентской области подлежащие пересчету и обычно используется после того, как вы изменили стиль окна путем вызова SetWindowLong.

SetWindowPos всегда приведет к WM_WINDOWPOSCHANGED сообщения изображения в окно. Флаги, передаваемые в этом сообщении в точности то же самое, как передаваемые в функцию. Никакие другие сообщения отправляются от этой функции.

Windows CE 1.0 не поддерживает константы HWND_TOPMOST и HWND_NOTOPMOST в параметре hwndInsertAfter.

Windows CE 1.0 не поддерживает SWP_DRAWFRAME или SWP_NOCOPYBITS флаги в fuFlags paramete.

QuickInfo

nbsp; Windows &NT: требует версии 3.1 или более поздней версии.
Windows:Требует Windows 95 или более поздней версии.
Windows CE:Требует версии 1.0 или более поздней версии.
Заголовок:Объявленные в winuser.h.
Импорта библиотеки:Использование user32.lib.

Родственные слова

Обзор Windows, SetActiveWindow оконные функции MoveWindow SetForegroundWindow

Index