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);
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".
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. |
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.
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.
&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.
Übersicht über die Windows -Funktionen MoveWindow, SetActiveWindow, SetForegroundWindow