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.
[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 |
---|---|
|
Zeichnet einen Rahmen (definiert in der Klassenbeschreibung des Fensters) um das Fenster. |
|
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. |
|
Blendet das Fenster aus. |
|
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 ). |
|
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. |
|
Behält die aktuelle Position bei (ignoriert die Parameter x und y ). |
|
Ändert die Position des Besitzerfensters in der Z-Reihenfolge nicht. |
|
Ä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. |
|
Identisch mit dem flag SWP_NOOWNERZORDER . |
|
Verhindert, dass das Fenster die WM_WINDOWPOSCHANGING-Nachricht empfängt. |
|
Behält die aktuelle Größe bei (ignoriert die Parameter cx und cy ). |
|
Behält die aktuelle Z-Reihenfolge bei (ignoriert den Parameter hWndInsertAfter ). |
|
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.
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
Konzept
Referenz