Freigeben über


DeferWindowPos-Funktion (winuser.h)

Updates die angegebene Positionsstruktur mit mehreren Fenstern für das angegebene Fenster. Die Funktion gibt dann ein Handle an die aktualisierte Struktur zurück. Die EndDeferWindowPos-Funktion verwendet die Informationen in dieser Struktur, um die Position und Größe einer Reihe von Fenstern gleichzeitig zu ändern. Die BeginDeferWindowPos-Funktion erstellt die -Struktur.

Syntax

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
);

Parameter

[in] hWinPosInfo

Typ: HDWP

Ein Handle für ein Mehrfachfenster – Positionsstruktur, die Größen- und Positionsinformationen für ein oder mehrere Fenster enthält. Diese Struktur wird von BeginDeferWindowPos oder durch den letzten Aufruf von DeferWindowPos zurückgegeben.

[in] hWnd

Typ: HWND

Ein Handle für das Fenster, für das Updateinformationen in der -Struktur gespeichert sind. Alle Fenster in einer Struktur mit mehreren Fenstern – Position müssen über dasselbe übergeordnete Element verfügen.

[in, optional] hWndInsertAfter

Typ: HWND

Ein Handle für das Fenster, das dem positionierten Fenster in der Z-Reihenfolge vorangestellt ist. Dieser Parameter muss ein Fensterhandle oder einer der folgenden Werte sein. Dieser Parameter wird ignoriert, wenn das SWP_NOZORDER-Flag im uFlags-Parameter festgelegt ist.

Wert Bedeutung
HWND_BOTTOM
((HWND)1)
Places das Fenster am unteren Rand der Z-Reihenfolge. Wenn der hWnd-Parameter ein oberstes Fenster identifiziert, verliert das Fenster seine oberste status und wird am unteren Rand aller anderen Fenster platziert.
HWND_NOTOPMOST
((HWND)-2)
Places das Fenster über allen nicht obersten Fenstern (d. a. hinter allen obersten Fenstern). Dieses Flag hat keine Auswirkung, wenn das Fenster bereits ein nicht oberstes Fenster ist.
HWND_TOP
((HWND)0)
Places das Fenster oben in der Z-Reihenfolge.
HWND_TOPMOST
((HWND)-1)
Places das Fenster über allen Fenstern, die nicht oberste Fenster sind. Das Fenster behält seine oberste Position bei, auch wenn es deaktiviert ist.

[in] x

Typ: int

Die x-Koordinate der linken oberen Ecke des Fensters.

[in] y

Typ: int

Die y-Koordinate der linken oberen Ecke des Fensters.

[in] cx

Typ: int

Die neue Breite des Fensters in Pixel.

[in] cy

Typ: int

Die neue Höhe des Fensters in Pixel.

[in] uFlags

Typ: UINT

Eine Kombination der folgenden Werte, die sich auf die Größe und Position des Fensters auswirken.

Wert Bedeutung
SWP_DRAWFRAME
0x0020
Zeichnet einen Rahmen (definiert in der Klassenbeschreibung des Fensters) um das Fenster.
SWP_FRAMECHANGED
0x0020
Sendet eine WM_NCCALCSIZE Nachricht an das Fenster, auch wenn die Größe des Fensters nicht geändert wird. Wenn dieses Flag nicht angegeben ist, wird WM_NCCALCSIZE nur gesendet, wenn die Größe des Fensters geändert wird.
SWP_HIDEWINDOW
0x0080
Blendet das Fenster aus.
SWP_NOACTIVATE
0x0010
Aktiviert das Fenster nicht. Wenn dieses Flag nicht festgelegt ist, wird das Fenster aktiviert und an den Anfang der obersten oder nicht obersten Gruppe verschoben (abhängig von der Einstellung des hWndInsertAfter-Parameters ).
SWP_NOCOPYBITS
0x0100
Verwirft den gesamten Inhalt des Clientbereichs. Wenn dieses Flag nicht angegeben ist, werden die gültigen Inhalte des Clientbereichs gespeichert und wieder in den Clientbereich kopiert, nachdem das Fenster dimensioniert oder neu positioniert wurde.
SWP_NOMOVE
0x0002
Behält die aktuelle Position bei (ignoriert die Parameter x und y ).
SWP_NOOWNERZORDER
0x0200
Ändert die Position des Besitzerfensters in der Z-Reihenfolge nicht.
SWP_NOREDRAW
0x0008
Änderungen werden nicht neu gezeichnet. Wenn dieses Flag festgelegt ist, erfolgt keine Neulackierung jeglicher Art. Dies gilt für den Clientbereich, den Nichtclientbereich (einschließlich Titelleiste und Bildlaufleisten) und alle Teile des übergeordneten Fensters, die aufgrund des Verschiebens des Fensters aufgedeckt wurden. Wenn dieses Flag festgelegt ist, muss die Anwendung alle Teile des Fensters und des übergeordneten Fensters, die neu ausgezeichnet werden müssen, explizit für ungültig erklären oder neu zeichnen.
SWP_NOREPOSITION
0x0200
Identisch mit dem flag SWP_NOOWNERZORDER .
SWP_NOSENDCHANGING
0x0400
Verhindert, dass das Fenster die WM_WINDOWPOSCHANGING-Nachricht empfängt.
SWP_NOSIZE
0x0001
Behält die aktuelle Größe bei (ignoriert die Parameter cx und cy ).
SWP_NOZORDER
0x0004
Behält die aktuelle Z-Reihenfolge bei (ignoriert den Parameter hWndInsertAfter ).
SWP_SHOWWINDOW
0x0040
Zeigt das Fenster an.

Rückgabewert

Typ: HDWP

Der Rückgabewert identifiziert die aktualisierte Positionsstruktur mit mehreren Fenstern. Das von dieser Funktion zurückgegebene Handle kann sich von dem an die Funktion übergebenen Handle unterscheiden. Das neue Handle, das von dieser Funktion zurückgegeben wird, sollte beim nächsten Aufruf der Funktion DeferWindowPos oder EndDeferWindowPos übergeben werden.

Wenn nicht genügend Systemressourcen für die erfolgreiche Funktion verfügbar sind, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn ein Aufruf von DeferWindowPos fehlschlägt, sollte die Anwendung den Fensterpositionierungsvorgang abbrechen und nicht EndDeferWindowPos aufrufen.

Wenn SWP_NOZORDER nicht angegeben wird, platziert das System das durch den hWnd-Parameter identifizierte Fenster an der Position, die dem durch den hWndInsertAfter-Parameter identifizierten Fenster folgt. Wenn hWndInsertAfterNULL oder HWND_TOP ist, platziert das System das hWnd-Fenster oben in der Z-Reihenfolge. Wenn hWndInsertAfter auf HWND_BOTTOM festgelegt ist, platziert das System das Fenster hWnd am unteren Rand der Z-Reihenfolge.

Alle Koordinaten für untergeordnete Fenster sind relativ zur oberen linken Ecke des Clientbereichs des übergeordneten Fensters.

Ein Fenster kann zum obersten Fenster gemacht werden, indem entweder hWndInsertAfter auf das flag HWND_TOPMOST festgelegt und sichergestellt wird, dass das flag SWP_NOZORDER nicht festgelegt ist, oder indem die Position des Fensters in der Z-Reihenfolge festgelegt wird, sodass es über allen vorhandenen obersten Fenstern liegt. Wenn ein Fenster, das nicht oberstes Fenster ist, ganz oben festgelegt wird, werden seine eigenen Fenster ebenfalls an oberster Stelle gesetzt. Seine Besitzer werden jedoch nicht geändert.

Wenn weder das flag SWP_NOACTIVATE noch SWP_NOZORDER angegeben wird (d. h. wenn die Anwendung die gleichzeitige Aktivierung eines Fensters anfordert und seine Position in der Z-Reihenfolge geändert wird), wird der in hWndInsertAfter angegebene Wert nur unter den folgenden Umständen verwendet:

  • Weder das flag HWND_TOPMOST noch HWND_NOTOPMOST wird in hWndInsertAfter angegeben.
  • Das von hWnd identifizierte Fenster ist nicht das aktive Fenster.
Eine Anwendung kann ein inaktives Fenster nicht aktivieren, ohne es auch an den Anfang der Z-Reihenfolge zu bringen. Eine Anwendung kann die Position eines aktivierten Fensters in der Z-Reihenfolge ohne Einschränkungen ändern, oder sie kann ein Fenster aktivieren und es dann an den Anfang des obersten oder nicht obersten Fensters verschieben.

Ein Fenster oben ist nicht mehr ganz oben, wenn es am unteren Rand (HWND_BOTTOM) der Z-Reihenfolge oder nach einem nicht obersten Fenster positioniert wird. Wenn ein oberstes Fenster als nicht oberstes Fenster festgelegt wird, werden seine Besitzer und seine eigenen Fenster ebenfalls zu nicht obersten Fenstern gemacht.

Ein Fenster, das nicht ganz oben ist, besitzt möglicherweise ein fenster oben, aber nicht umgekehrt. Jedes Fenster (z. B. ein Dialogfeld), das sich im Besitz eines obersten Fensters befindet, wird selbst zu einem obersten Fenster gemacht, um sicherzustellen, dass alle eigenen Fenster über ihrem Besitzer bleiben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-window-l1-1-4 (eingeführt in Windows 10, Version 10.0.14393)

Weitere Informationen

BeginDeferWindowPos

Konzept

EndDeferWindowPos

Referenz

Showwindow

Windows