CWnd Reihenfolge ermitteln und verändern
-
Hallo Leute,
ich habe ein Fenster was ich immer exakt über ein anderes legen will.
Ich habe es soweit implemetiert und es funkioniert auch soweit.
Jetzt kann es manchmal sein das ich mit einem dritten Fenster(Explorer),welches ich über das obere Fenster lege, mit diesem zwischen die Beiden Fenster gerade.
Ist es möglich die Reihenfolge der Windows auf dem Stack abzufragen und diese zu korrigieren?
-
Hallo souso20,
Die Z-Reihenfolge der Fenster kannst du mit der Methode CWnd::GetWindow().
Mit dem Parameter GW_HWNDNEXT und GW_HWNDPREV kannst du zum nächsten / vorherigen Fenster in der Z-Reihenfolge kommen.
Zum ändern der Reihenfolge gibs z.B. die Funktion CWnd::SetWindowPos().
Im ersten Parameter gibst du den Vorgänger an nachem dein Fenster einsortiert werden soll. Im letzten Parameter der Funktion gibst du an welche Parameter sonst noch gültig sind. Wenn du also nur die Z-Order festlegen willst:
pMyWnd->SetWindowPos( &CWnd::wndTop, 0,0,0,0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE );