Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обновляет указанную структуру с несколькими окнами — структуру позиции для указанного окна. Затем функция возвращает дескриптор обновленной структуре. Функция EndDeferWindowPos использует сведения в этой структуре для одновременного изменения положения и размера нескольких окон. Функция BeginDeferWindowPos создает структуру.
Синтаксис
HDWP DeferWindowPos(
[in] HDWP hWinPosInfo,
[in] HWND hWnd,
[in, optional] HWND hWndInsertAfter,
[in] int x,
[in] int y,
[in] int cx,
[in] int cy,
[in] UINT uFlags
);
Параметры
[in] hWinPosInfo
Тип: HDWP
Дескриптор в нескольких окнах — структура положения, содержащая сведения о размере и положении для одного или нескольких окон. Эта структура возвращается BeginDeferWindowPos или последним вызовом DeferWindowPos.
[in] hWnd
Тип: HWND
Дескриптор окна, для которого сведения об обновлении хранятся в структуре. Все окна в нескольких окнах — структура позиции должна иметь один и тот же родительский элемент.
[in, optional] hWndInsertAfter
Тип: HWND
Дескриптор окна, предшествовающего расположенному окну в порядке Z. Этот параметр должен быть дескриптором окна или одним из следующих значений. Этот параметр игнорируется, если флаг SWP_NOZORDER задан в параметре uFlags .
[in] x
Тип: int
Координата x верхнего левого угла окна.
[in] y
Тип: int
Координата y верхнего левого угла окна.
[in] cx
Тип: int
Новая ширина окна в пикселях.
[in] cy
Тип: int
Новая высота окна в пикселях.
[in] uFlags
Тип: UINT
Сочетание следующих значений, влияющих на размер и положение окна.
| Ценность | Meaning |
|---|---|
|
Рисует кадр (определенный в описании класса окна) вокруг окна. |
|
Отправляет сообщение WM_NCCALCSIZE в окно, даже если размер окна не изменяется. Если этот флаг не указан, WM_NCCALCSIZE отправляется только при изменении размера окна. |
|
Скрывает окно. |
|
Не активирует окно. Если этот флаг не задан, окно активируется и перемещается в верхнюю или неверную группу (в зависимости от параметра hWndInsertAfter ). |
|
Удаляет все содержимое клиентской области. Если этот флаг не указан, допустимое содержимое клиентской области сохраняется и копируется обратно в клиентную область после размера или изменения положения окна. |
|
Сохраняет текущую позицию (игнорирует параметры x и y ). |
|
Не изменяет положение окна владельца в порядке Z. |
|
Не перерисовывает изменения. Если этот флаг задан, повторение любого вида не происходит. Это относится к клиентской области, неклиентной области (включая строку заголовка и полосы прокрутки), а также любую часть родительского окна, обнаруженную в результате перемещения окна. Если этот флаг задан, приложение должно явно отменять или перерисовывать все части окна и родительского окна, которые нуждаются в перерисовки. |
|
То же, что и флаг SWP_NOOWNERZORDER . |
|
Запрещает окне получать сообщение WM_WINDOWPOSCHANGING . |
|
Сохраняет текущий размер (игнорирует параметры cx и cy ). |
|
Сохраняет текущий порядок Z (игнорирует параметр hWndInsertAfter ). |
|
Отображает окно. |
Возвращаемое значение
Тип: HDWP
Возвращаемое значение определяет обновленную структуру с несколькими окнами — структуру позиции. Дескриптор, возвращаемый этой функцией, может отличаться от дескриптора, переданного функции. Новый дескриптор, возвращающий эту функцию, должен передаваться во время следующего вызова функции DeferWindowPos или EndDeferWindowPos .
Если для функции недостаточно системных ресурсов, возвращаемое значение равно NULL. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Если вызов DeferWindowPos завершается ошибкой, приложение должно отказаться от операции размещения окна и не вызывать EndDeferWindowPos.
Если SWP_NOZORDER не задано, система помещает окно, определяемое параметром hWnd , в позиции после окна, определяемого параметром hWndInsertAfter . Если hWndInsertAfter имеет значение NULL или HWND_TOP, система помещает окно hWnd в начало порядка Z. Если для hWndInsertAfter установлено значение HWND_BOTTOM, система помещает окно hWnd в нижней части порядка Z.
Все координаты дочерних окон относятся к левому верхнему углу клиентской области родительского окна.
Окно можно сделать самым верхним окном, задав hWndInsertAfter флаг HWND_TOPMOST и убедив, что флаг SWP_NOZORDER не задан, или установив положение окна в порядке Z, чтобы оно было выше всех существующих верхних окон. Когда самое верхнее окно делается самым верхним, его собственные окна также делаются самыми верхними. Однако его владельцы не изменяются.
Если ни SWP_NOACTIVATE, ни флаг SWP_NOZORDER не указан (то есть, когда приложение запрашивает одновременное активацию окна и его положение в порядке Z), значение, указанное в hWndInsertAfter , используется только в следующих обстоятельствах:
- Ни HWND_TOPMOST, ни флаг HWND_NOTOPMOST не указан в hWndInsertAfter.
- Окно, определяемое hWnd , не является активным окном.
Самое верхнее окно больше не является самым верхним, если оно переместится на нижний (HWND_BOTTOM) порядка Z или после любого самого верхнего окна. Когда самое верхнее окно не является самым верхним, его владельцы и собственные окна также делаются не самыми верхними окнами.
Самое верхнее окно может принадлежать самому верхнему окну, но не наоборот. Любое окно (например, диалоговое окно), принадлежащее самому верхнему окну, делается самым верхним окном, чтобы убедиться, что все принадлежащие им окна остаются над своим владельцем.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 2000 Профессиональный [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
| целевая платформа | Windows |
| Header | winuser.h (включая Windows.h) |
| Library | User32.lib |
| DLL | User32.dll |
| Набор API | ext-ms-win-ntuser-window-l1-1-4 (представлено в Windows 10 версии 10.0.14393) |
См. также
Концептуальный
Справочные материалы