SetWindowPos

Die Funktion SetWindowPos ändert die Größe, die Position und die Z-Reihenfolge von einem Kind, Pop-up oder der obersten Ebene Fenster. Kind, Pop-up und Top-Level Windows sind geordnet nach ihrer Darstellung auf dem Bildschirm. Das oberste Fenster erhält den höchsten Rang und ist das erste Fenster in der Z-Reihenfolge.

 BOOL SetWindowPos) HWND  hWnd, / / handle zum FensterHWNDhWndInsertAfter, / / handle Aushangint X, / / horizontale Positionint Y, / / vertikale Position int cx, // width int cy, // heightUINTuFlags / / Fenster-Positionierung Fahnen);
 

Parameter

hWnd
Handle für das Fenster.
hWndInsertAfter
Handle für das Fenster, Fenster in der Z-Reihenfolge positionierte vorangestellt. Dieser Parameter muss ein Fensterhandle oder einer der folgenden Werte sein.:
Wert Bedeutung
HWND_BOTTOM Schaltet das Fenster am unteren Rand der Z-Reihenfolge. Wenn der hWnd -Parameter ein oberstes Fenster bezeichnet, das Fenster verliert seinen obersten Status und befindet sich am unteren Rand aller anderen Fenster.
HWND_NOTOPMOST Places the window above all non-topmost windows (that is, behind all topmost windows). This flag has no effect if the window is already a non-topmost window.
HWND_TOP Schaltet das Fenster am oberen Rand der Z-Reihenfolge.
HWND_TOPMOST Schaltet das Fenster vor allem oberste Windows. Das Fenster behält seine oberste Position, auch wenn es deaktiviert ist.

Weitere Informationen dazu, wie dieser Parameter verwendet wird finden Sie unter den folgenden Abschnitt "Hinweise".

X
Gibt die neue Position des linken Randes des Fensters in Clientkoordinaten.
Y
Gibt die neue Position des oberen Fensterrand, in Clientkoordinaten.
cx
Gibt die neue Breite des Fensters in Pixel.
cy
Gibt die neue Höhe des Fensters in Pixel.
uFlags
Gibt das Fenster Größenänderung und Positionierung von Flaggen. Dieser Parameter kann eine Kombination der folgenden Werte sein.:
Wert Bedeutung
SWP_ASYNCWINDOWPOS Wenn der aufrufende Thread nicht das Fenster besitzt, Bucht das System die Anforderung an den Thread, der das Fenster besitzt. Dadurch wird verhindert, dass den aufrufenden Thread die Ausführung zu blockieren, während andere Threads die Anforderung nicht verarbeiten.
SWP_DEFERERASE Verhindert die Generierung der WM_SYNCPAINT Nachricht.
SWP_DRAWFRAME Zeichnet einen Rahmen (in der Klassenbeschreibung des Fensters definiert) um das Fenster.
SWP_FRAMECHANGED Sendet eine Nachricht WM_NCCALCSIZE zum Fenster, auch wenn die Fenstergröße nicht geändert wird. Wenn dieses Flag nicht angegeben ist, ist WM_NCCALCSIZE nur gesendet, wenn die Fenstergröße geändert wird.
SWP_HIDEWINDOW Blendet das Fenster.
SWP_NOACTIVATE Das Fenster wird nicht aktiviert werden. Wenn dieses Flag nicht festgelegt ist, wird das Fenster aktiviert und zog nach oben auf die oberste oder nicht-oberste Gruppe (je nach Einstellung des Parameters hWndInsertAfter ).
SWP_NOCOPYBITS Löscht den gesamten Inhalt des Clientbereichs. Wenn dieses Flag nicht angegeben ist, sind die gültigen Inhalt des Clientbereichs gespeichert und zurück in den Clientbereich kopiert werden, nachdem das Fenster Größe oder neu positioniert ist.
SWP_NOMOVE Behält die aktuelle Position (ignoriert die Parameter X und Y ).
SWP_NOOWNERZORDER Das Besitzerfenster Position in der Z-Reihenfolge nicht geändert.
SWP_NOREDRAW Änderungen wird nicht neu gezeichnet. Wenn dieses Flag festgelegt ist, tritt keine Malerarbeiten jeglicher Art. Dies gilt für den Clientbereich, der nicht-Clientbereich (einschließlich der Titelleiste und Bildlaufleisten), und ein Teil des übergeordneten Fensters aufgedeckt aufgrund eines Fensters verschoben wird. Wenn dieses Flag festgelegt ist, muss die Anwendung explizit ungültig erklärt oder neu zeichnen alle Teile des Fensters und übergeordnete Fenster, das Neuzeichnen benötigen.
SWP_NOREPOSITION Dasselbe wie das SWP_NOOWNERZORDER-flag.
SWP_NOSENDCHANGING Verhindert, dass das Fenster empfangen der Nachricht WM_WINDOWPOSCHANGING.
SWP_NOSIZE Behält die aktuelle Größe (ignoriert die Cx und cy -Parameter).
SWP_NOZORDER Behält die aktuelle Z-Reihenfolge (den hWndInsertAfter -Parameter ignoriert).
SWP_SHOWWINDOW Zeigt das Fenster.

Rückgabewerte

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich NULL.

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Rufen Sie Fehlerinformationen verlängert bekommen, GetLastError.

Bemerkungen

Wenn die SWP_SHOWWINDOW oder SWP_HIDEWINDOW-Flag festgelegt ist, kann nicht das Fenster verschoben oder angepasst werden.

Wenn Sie bestimmte Fenster Daten mit SetWindowLonggeändert haben, müssen Sie aufrufen, SetWindowPos die Änderungen wirksam werden. Verwenden Sie die folgende Kombination für uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Ein Fenster kann ein oberstes Fenster erfolgen, entweder durch Festlegen des hWndInsertAfter -Parameters HWND_TOPMOST zu gewährleisten, die das SWP_NOZORDER-Flag nicht festgelegt ist, oder durch ein Fenster Position in der Z-Reihenfolge festlegen, so dass es über alle vorhandenen oberste Fenster ist. Wenn ein nicht-oberstes Fenster oberste erfolgt, werden auch zugehörigen Besitzfenster oberste gemacht. Die Besitzer sind jedoch nicht geändert.

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

Eine Anwendung kann kein inaktives Fensters aktivieren, ohne dass es auch an der Spitze der Z-Reihenfolge. Anwendungen können eine aktivierte Fenster Position in der Z-Reihenfolge ohne Einschränkungen ändern, oder es kann ein Fenster aktivieren und verschieben Sie es dann an die Spitze der obersten oder nicht-obersten Fenster.

Wenn ein oberstes Fenster an der Unterseite (HWND_BOTTOM) der Z-Reihenfolge oder nach jedem nicht-obersten Fenster positioniert ist, ist es nicht mehr oberste. Erfolgt ein oberstes Fenster nicht-obersten, seine Besitzer und zugehörigen Besitzfenster ebenfalls nicht oberste Windows erfolgen.

Ein nicht-oberstes Fenster kann ein oberstes Fenster besitzen, aber das Gegenteil kann nicht auftreten. Alle Fenster (z. B. ein Dialogfeld) im Besitz von einem obersten Fenster ist selbst ein oberstes Fenster, um sicherzustellen, dass alle gehört, dass Windows über ihre Besitzer bleiben.

Wenn eine Anwendung nicht im Vordergrund, und im Vordergrund sollte, muss es die SetForegroundWindow -Funktion aufrufen.

Windows CE: Wenn das Fenster der obersten Ebene sichtbar ist, und das SWP_NOACTIVATE-Flag nicht angegeben ist, wird diese Funktion des Fensters aktivieren. Wenn dies das derzeit aktive Fenster ist, und entweder die SWP_NOACTIVATE-Flag oder das SWP_HIDEWINDOW-Flag angegeben ist, wird die Aktivierung an ein anderes sichtbares Fenster der obersten Ebene weitergeleitet.

Wenn Sie das SWP_FRAMECHANGED-Flag in des nFlags -Parameters dieser Funktion festlegen, zeichnet Windows CE den gesamten nicht-Clientbereich des Fensters, die Größe des Clientbereichs geändert werden. Dies ist der einzige Weg, den nicht-Clientbereich neu berechnet werden und ist in der Regel verwendet, nachdem Sie den Fensterstil durch Aufrufen von SetWindowLong geändert haben.

SetWindowPos bewirkt immer eine WM_WINDOWPOSCHANGED-Nachricht an das Fenster gesendet werden. Die Flags übergeben in dieser Nachricht sind genau die gleichen wie die an die Funktion übergeben. Keine anderen Nachrichten sind von dieser Funktion gesendet.

Windows CE 1.0 unterstützt nicht die Konstanten HWND_TOPMOST und HWND_NOTOPMOST in der HwndInsertAfter -parameter.

Windows CE 1.0 unterstützt nicht die Flags SWP_DRAWFRAME oder SWP_NOCOPYBITS in der FuFlags Paramet.

QuickInfo

&Nbsp; Windows NT: Version 3.1 oder höher erforderlich.
Windows:Erfordert Windows 95 oder höher.
Windows CE:Version 1.0 oder höher benötigt.
Header:In winuser.h deklarierten.
Importieren Bibliothek:Verwenden Sie user32.lib.

Siehe auch

Übersicht über die Windows -Funktionen MoveWindow, SetActiveWindow, SetForegroundWindow

Index