Toolfenster, das im Hintergrund verschwindet (non stay-on-top)



  • Hallo miteinander!

    Ich habe folgendes Problem:
    Ich brauche einen Dialog, der nicht in der Taskleiste erscheint, aber trotzdem hinter dem Hauptfenster verschwindet.

    Gelöst habe ich das im Moment, indem ich den Dialogen die Eigenschaft "Toolfenster" gegeben habe und als parent "GetDesktopWindow()" übergeben habe.

    Das einzige Problem bei dieser Lösung ist, dass wenn man von einer anderen Anwendung zurückwechselt (z.B. per ALT-TAB oder Taskleiste), dann wird nur das Hauptfenster angezeigt, die Dialoge bleiben (scheinbar aufgrund des falschen parents) im Hintergrund.

    Gibt es eine Lösung?
    Vielen Dank!

    hubsif.



  • Hmm ich mein das MFC bei dem Toolwindow den param automatisch dazu setzte 😉

    versuch mal mit:

    SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE) & (~(WS_EX_TOPMOST)));
    

    Referenzen:
    GetWindowLong
    SetWindowLong
    CreateWindowEx - WM_EX_ Styles

    [edit]Ich bin mir aber nicht ganz sicher ob die WindowLong Funktionen auch mit ExStyles funzen :([/edit]



  • ShowWindow(SW_MINIMIZE);



  • Hi!

    Erstmal danke.

    Leider bin ich noch nicht weitergekommen.

    @(D)Evil: Hat leider nichts gebracht. Habs auch mit

    ModifyStyleEx(WS_EX_TOPMOST, 0);
    

    probiert, auch kein Erfolg.

    @Unix-Tom: ???

    Grüße
    hubsif.



  • aja... evt. auch einfach mit SetWindowPos ... und sonnst evt. einfach mal die OnLoseFocus oder wie die noch gleich heißt überschreiben und das Fenster dann minimieren... beim OnSetFocus das Wnd wieder anzeigen 🙂



  • Habe überlesen das es sich um einen 2. Dialog handelt und nicht um das verstecken einer Dialoganwendung.



  • was 2. dialog?! echt?!



  • Ja! 🙂

    Also nochmal genauer:

    Ich hab ein Hauptfenster (CFrameWnd mit CFormView), welches die Hauptanwendung ist. Dazu kommen diverse "Steuer"-Dialoge, die man anzeigen/verschwinden lassen kann. Diese Dialoge sind CDialog und sollen nicht in der Taskleiste erscheinen.

    Nun ist das Problem, dass wenn ich den Dialogen kein parent zuweise, sondern GetDesktopWindow() werden sie nicht mit in den Vordergrund gebracht, wenn man (z.B. per Taskleiste) die Anwendung auswählt.
    Wenn ich als parent das Hauptfenster übergebe, liegen die Dialoge immer über dem Hauptfenster (was ToolWindows wohl so an sich haben). Dies soll aber nicht sein, sondern die Dialoge sollen bei Klick aufs Hauptfenster hinter diesem verschwinden.

    Alle Klarheiten beseitigt? 😃

    Grüße
    hubsif.



  • tjo... wie erstellst du denn die tool windows? modal? oder mit createdialog?!



  • Gabs da nicht eine Klasse die das macht. TOOLBAR oder so.



  • Hi!

    @(D)Evil: Die Dialoge erstelle ich mit CDialog::Create. Modal sollen sie ja eben nicht sein.

    @Unix-Tom: Hab CToolBar gefunden, allerdings ist das wohl nicht so ganz das richtige für mich:

    Objects of the class CToolBar are control bars that have a row of bitmapped buttons and optional separators.


Anmelden zum Antworten