Windows: Fenster minimieren und ordnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Windows: Fenster minimieren und ordnen

    Tag,

    ich mal wieder ^^

    Ich suche Rat bzgl des minimierens in Windows. Und zwar funktioniert bei mir das minimieren wunderbar mittlerweile. Ich mache das via

    Quellcode

    1. ShowWindow(hWnd, SW_MINIMIZE);


    Soweit so gut. Nur hab ich jetzt eine Sache, die mir nicht so gut gefällt. Und zwar gibt es ja dieses eine Fenster unter Windows, welches, wenn man alt+tab drückt, erscheint. In diesem Fenster gibt es eine gewisse Ordnung. Hier möchte ich es gerne so, dass nach dem minimieren, wenn ich durch die Liste zappe (mit mehrmaligem drücken von alt + tab, tab tab etc etc), dass dann nach dem ersten mal drücken von tab, es sofort wieder auf meine Anwendung, die ich ja eben gerade minimiert habe, zurückwitched.

    Momentan ist es so, dass ich minimiere, alt+tab drücke, und dann erstmal die ganze Liste durchzappen muss, da meine Applikation da am Ende gelistet ist.

    Jetzt weiß ich nicht mal wie man das nennt. Ich hab nen haufenzeugs über Z-Order gelesen, bin mir aber nicht sicher ob das in die Richtung geht. Auch ein API Call mit

    Quellcode

    1. BringWindowToTop(hWnd);


    hat nicht gefunzt, ich glaube aber auch der macht was ganz was anderes.

    Also kann mir da jdm nachhelfen, ich bin mir sicher es ist nur ein API-Call, aber welcher ?

    Gruß
    z0
  • Ich glaub mit der Z Ordnung bist du gar nicht so weit von deinem Ziel entfernt:
    die Fenster scheinen in Tab-Wechsel-Ansicht nach ihrer Z Ordnung soritert zu sein, wobei das vorderste in der Liste als erstes erscheint.

    Problem ist das sich die Z-Positionen der Fenster durch den Benutzer ständig ändern.

    Du müsstest also vor dem Aufruf dieser Ansicht dein Fenster als zweites nach dem Vordersten einsortieren und hier beginen die Probleme:
    -> Welches ist dein Fenster (Ok das sollte eigentlich klar sein)
    -> Welches ist das oberste Fenster (Mit GetWindow das Kindfenster [Oberstes Fenster] herausfinden wobei Parent -> DesktopHandle)
    -> Wie fange ich den Aufruf dieses Fensters ab um die Fenster nach meinem wunsch zu sortieren? (-> Eventuell mit einem System Keyboard-Hook)
    -> Setzten des eigenen Fensters nach dem ersten (SetWindowPos)

    Mfg Rushh0ur
  • Hey,

    hast mir grad sehr geholfen, thx :) Habe mich ein bißchen auf die SetWindowPos Funktion konzentriert, und nach ein bißchen rumprobieren hab ich nun den gewünschten Effekt erzielt. Vielen vielen Dank!

    Den Code den ich nun benutze ist je nach Situation mit den Paramtern verschieden. Beim Fenster-Deaktivieren benutze ich im wesentlichen einen anderen Paramter als beim Aktivieren. Das ganze sieht dann ungefähr so aus:

    Quellcode

    1. SetWindowPos(hWnd, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE | SWP_NOSENDCHANGING);


    und

    Quellcode

    1. SetWindowPos(hWnd, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE | SWP_NOSENDCHANGING);


    Danke nochmal, hat mir sehr geholfen. Ich hoffe es gibt keine Bugs, denn hab gleich hier reingeschrieben nach dem es gefunzt hat. Naja ich probier nochmal nen bißchen rum, und falls was nicht klappt meld ich mich nochmal ^^

    Gruß
    z0