Freigeben über


DeferWindowPos-Funktion (winuser.h)

Aktualisiert die angegebene Mehrfensterpositionsstruktur für das angegebene Fenster. Die Funktion gibt dann ein Handle an die aktualisierte Struktur zurück. Die Funktion EndDeferWindowPos 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
);

Die 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 vom letzten Aufruf von DeferWindowPos zurückgegeben.

[in] hWnd

Typ: HWND-

Ein Handle für das Fenster, für das Aktualisierungsinformationen in der Struktur gespeichert werden. Alle Fenster in einem Mehrfenster – Positionsstruktur müssen dasselbe übergeordnete Element aufweisen.

[in, optional] hWndInsertAfter

Typ: HWND-

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

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

[in] x

Typ: int

Die x-Koordinate der oberen linken Ecke des Fensters.

[in] y

Typ: int

Die Y-Koordinate der oberen linken 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 Kennzeichen nicht angegeben ist, wird WM_NCCALCSIZE nur gesendet, wenn die Fenstergröße geändert wird.
SWP_HIDEWINDOW
0x0080
Blendet das Fenster aus.
SWP_NOACTIVATE
0x0010
Aktiviert das Fenster nicht. Wenn dieses Kennzeichen 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 die Größe des Fensters angepasst oder neu positioniert wurde.
SWP_NOMOVE
0x0002
Behält die aktuelle Position bei (ignoriert die x - und y-Parameter ).
SWP_NOOWNERZORDER
0x0200
Ändert die Position des Besitzerfensters in der Z-Reihenfolge nicht.
SWP_NOREDRAW
0x0008
Änderungen werden nicht neu gezeichnet. Wenn dieses Kennzeichen festgelegt ist, tritt keine Aktualisierung jeglicher Art auf. Dies gilt für den Clientbereich, den nichtclientfreien Bereich (einschließlich der Titelleiste und Bildlaufleisten) und alle Teile des übergeordneten Fensters, der infolge des Verschiebens des Fensters aufgedeckt wird. Wenn dieses Kennzeichen festgelegt ist, muss die Anwendung alle Teile des Fensters und des übergeordneten Fensters, die neu gezeichnet werden müssen, explizit ungültig oder neu zeichnen.
SWP_NOREPOSITION
0x0200
Identisch mit der SWP_NOOWNERZORDER-Kennzeichnung .
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 cx - und cy-Parameter ).
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 Mehrfensterpositionsstruktur. Der von dieser Funktion zurückgegebene Handle kann sich von dem handle unterscheiden, der an die Funktion übergeben wird. Das neue Handle, das diese Funktion zurückgibt, sollte während des nächsten Aufrufs der Funktion DeferWindowPos oder EndDeferWindowPos übergeben werden.

Wenn nicht genügend Systemressourcen verfügbar sind, damit die Funktion erfolgreich ausgeführt werden kann, ist der Rückgabewert NULL. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

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

Wenn SWP_NOZORDER nicht angegeben ist, platziert das System das durch den hWnd-Parameter identifizierte Fenster an der Position nach dem durch den hWndInsertAfter-Parameter identifizierten Fenster. 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 hWnd-Fenster 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 entweder durch Festlegen von hWndInsertAfter auf das HWND_TOPMOST Flag und sicherstellen, dass das SWP_NOZORDER Flag 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 nicht oberstes Fenster ganz oben erstellt wird, werden auch die eigenen Fenster ganz oben erstellt. Seine Besitzer werden jedoch nicht geändert.

Wenn weder das SWP_NOACTIVATE noch SWP_NOZORDER Flag angegeben wird (d. h., wenn die Anwendung anfordert, dass ein Fenster gleichzeitig aktiviert und seine Position in der Z-Reihenfolge geändert wird), wird der in hWndInsertAfter angegebene Wert nur unter folgenden Umständen verwendet:

  • Weder das HWND_TOPMOST noch HWND_NOTOPMOST Flag 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 ein Fenster aktivieren und es dann an den Anfang der obersten oder nicht obersten Fenster verschieben.

Ein oberstes Fenster befindet sich nicht mehr ganz oben, wenn es nach unten (HWND_BOTTOM) der Z-Reihenfolge oder nach einem nicht obersten Fenster neu positioniert wird. Wenn ein oberstes Fenster nicht ganz oben erstellt wird, werden die Besitzer und die eigenen Fenster ebenfalls nicht oberste Fenster erstellt.

Ein nicht oberstes Fenster besitzt möglicherweise ein oberstes Fenster, aber nicht umgekehrt. Jedes Fenster (z. B. ein Dialogfeld) im Besitz eines obersten Fensters ist selbst ein oberstes Fenster, um sicherzustellen, dass alle eigenen Fenster über ihrem Besitzer bleiben.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 2000 Professional [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows 2000 Server [nur Desktop-Apps]
Zielplattform Fenster
Header winuser.h (enthalten Windows.h)
Library User32.lib
DLL User32.dll
API-Satz ext-ms-win-ntuser-window-l1-1-4 (eingeführt in Windows 10, Version 10.0.14393)

Siehe auch

BeginDeferWindowPos

Konzeptionelle

EndDeferWindowPos

Referenz

ShowWindow

Windows