SetWindowPos
Aus API-Wiki
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.
Die API-Funktion SetWindowPos positioniert, zeigt und versteckt Fenster.
Public Declare Function SetWindowPos Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long) _ As Long
Parameter
hWnd
- Handle des Fensters, welches positioniert werden soll.
hWndInsertAfter
- Hinter welchem Fensterhandle das neue Fester positioniert werden soll.
- Möglich sind auch die folgenden Werte:
Const HWND_BOTTOM = 1 Const HWND_NOTOPMOST = -2 Const HWND_TOP = 0 Const HWND_TOPMOST = -1
HWND_BOTTOM
sorgt dafür, dass das Fenster ganz unten in der Z-Order plaziert wird und damit hinter allern anderen Fenstern liegt. Andere Fenster der gleichen Anwendung werden möglicherweise "mitgerissen" und ebenfalls "nach hinten" verschoben.
HWND_NOTOPMOST
sorgt dafür, dass das Fenster über allen normalen, aber unter Topmost-Fenstern dargestellt wird. Falls das Fenster ein Topmost-Fenster war, verliert es den Status.
HWND_TOP
sorgt dafür, dass das Fenster über allen normalen Fenstern (der gleichen Anwendung) dargestellt wird. Da der Wert 0 ist, ist dies auch eine Art "Standardeinstellung".
HWND_TOPMOST
sorgt dafür, dass das Fenster immer im Vordergrund dargestellt wird, auch wenn es den Fokus verliert. Allerdings können andere Fenster mit der gleichen Eigenschaft je nach Fokus trotzdem das Fenster verdecken. Soll das Fenster die Eigenschaft (wieder) verlieren, mussSetWindowPos
mit dem ParameterHWND_NOTOPMOST
aufgerufen werden.
x
- Die X-Koordinate der neuen Fensterposition (entspricht Left-Eigenschaft) in Pixeln.
y
- Die Y-Koordinate der neuen Fensterposition (entspricht Top-Eigenschaft) in Pixeln.
cx
- Die Breite der neuen Fensterposition (entspricht Width-Eigenschaft) in Pixeln.
cy
- Die Höhe der neuen Fensterposition (entspricht Height-Eigenschaft) in Pixeln.
wFlags
- Steuert, welche Aktion durchgeführt werden soll. Mögliche Werte sind eine Kombination der folgenden Flags:
Const SWP_NOSIZE = &H1 Const SWP_NOMOVE = &H2 Const SWP_NOZORDER = &H4 Const SWP_NOREDRAW = &H8 Const SWP_NOACTIVATE = &H10 Const SWP_FRAMECHANGED = &H20 Const SWP_SHOWWINDOW = &H40 Const SWP_HIDEWINDOW = &H80 Const SWP_NOCOPYBITS = &H100 Const SWP_NOOWNERZORDER As Long = &H200 Const SWP_NOSENDCHANGING As Long = &H400 Const SWP_ASYNCWINDOWPOS As Long = &H4000 Const SWP_DEFERERASE As Long = &H2000
SWP_NOSIZE
Verhindert, dass das Fenster eine neue Größe bekommt. cx und cy sind dann irrelevant und können auf 0 gesetzt werden.
SWP_NOMOVE
Verhindert, dass das Fenster verschoben wird. x und y sind dann irrelevant und können auf 0 gesetzt werden.
SWP_NOZORDER
Verhindert, dass die Z-Order-Position verändert wird.
SWP_NOREDRAW
Verhindert, dass irgendetwas automatisch neu gezeichnet wird. Das betrifft sowohl das Fenster selbst, aber auch alle verdeckten Fenster werden nicht invalidiert.
SWP_NOACTIVATE
Verhindert, dass das Fenster den Fokus erhält.
SWP_FRAMECHANGED
Wird benutzt um Änderungen der SetWindowLong-Funktion anzuwenden. Sendet eine WM_NCCALCSIZE-Nachricht an das Fenster.
SWP_SHOWWINDOW
Sorgt dafür, dass das Fenster sichtbar wird. EntsprichtForm.Show()
.
SWP_HIDEWINDOW
Sorgt dafür, dass das Fenster unsichtbar wird. EntsprichtForm.Hide()
.
SWP_NOCOPYBITS
Verwirft den kompletten dargestellten Formularinhalt und sorgt so für ein vollständiges Neuzeichnen.
SWP_NOOWNERZORDER
Verschiebt nicht das besitzende Fenster in der Z-Order.
SWP_NOSENDCHANGING
Verhindert, dass das Fenster die WM_WINDOWPOSCHANGING-Nachricht erhält
SWP_ASYNCWINDOWPOS
Verhindert das der aufrufende Thread durch den Thread, der das Fenster verarbeitet, blockiert werden kann.
SWP_DEFERERASE
Verhindert, dass das Fenster die WM_SYNCPAINT-Nachricht erhält
Rückgabe
Die Funktion gibt einen Wert des Types Long ungleich 0 bei Erfolg, den Wert 0 bei Misserfolg zurück.
Beispiele
Bereits angezeigtes Fenster immer im Vordergrund halten ohne die Position zu verändern:
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
(Noch nicht angezeigtes) Fenster anzeigen ohne den Fokus darauf zu setzen:
SetWindowPos hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
Fenster neu positionieren:
SetWindowPos hWnd, 0, 100, 150, 200, 210, SWP_NOZORDER
(Noch nicht angezeigtes) Fenster anzeigen, aber immer im Vordergrund halten, mit Positionsangabe und ohne den Fokus darauf zu setzen:
SetWindowPos hWnd, HWND_TOPMOST, left, top, width, height, SWP_NOACTIVATE Or SWP_SHOWWINDOW
Verwandte Funktionen
- CloseWindow - Fenster minimieren
- ShowWindow - Fenster minimieren, maximieren, anzeigen, verstecken
- SetWindowLong - Fensterattribute einstellen
- SetLayeredWindowAttributes - Erweiterte ("Layered Window") Fensterattribute einstellen
Verweise
- MSDN-Eintrag: http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx
- Übersicht auf ActiveVB: http://www.activevb.de/rubriken/apikatalog/deklarationen/setwindowpos.html
Quellen
- http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx
- API-Viewer 2004