Функция SetWindowPos меняет размер, позицию и z порядок ребенка, всплывающее окно, или верхнего уровня окна. Ребенок, окна всплывающее и верхнего уровня упорядочиваются в соответствии с их появление на экране. Верхний окно получает высший ранг и является первым окном в Z-порядке.
(BOOL SetWindowPos HWND hWnd, / / дескриптор окнаHWNDhWndInsertAfter, / / обрабатывать порядка следованияint X, / / горизонтальное положениеint Y, / / вертикальное положение int cx, // width int cy, // heightUINTuFlags / / позиционирования окна флаги);
| Значение | Значение |
|---|---|
| HWND_BOTTOM | Помещает окно в нижней части Z-порядка. Если параметр hWnd идентифицирует верхний окно, окно теряет свой верхний статус и помещается в нижней части всех остальных окон. |
| HWND_NOTOPMOST | Помещает окно прежде всего верхний windows (то есть, за все верхнего окна). Этот флаг не работает, если это уже не верхний окно. |
| HWND_TOP | Помещает окно в верхней части Z-порядка. |
| HWND_TOPMOST | Помещает окно прежде всего верхний windows. Окна придерживается своей позиции, верхний, даже когда он отключается. |
Для получения дополнительных сведений о том, как используется этот параметр смотрите в следующем разделе замечания.
| Значение | Значение |
|---|---|
| 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.
nbsp; Windows &NT: требует версии 3.1 или более поздней версии.
Windows:Требует Windows 95 или более поздней версии.
Windows CE:Требует версии 1.0 или более поздней версии.
Заголовок:Объявленные в winuser.h.
Импорта библиотеки:Использование user32.lib.
Обзор Windows, SetActiveWindow оконные функции MoveWindow SetForegroundWindow