Child Dialog hinter Parent



  • Ich habe hier ne Anwendung die einen Dialog hat der über den ganzen Bildschirm geht ( BackgroundDialog ), und davor einen kleineren Dialog wo man einige Sachen einstellen kann ( SettingsDialog ).
    Der BackgroundDialog ist dabei komplett leer und dient, wie der Name schon vermuten lässt, nur als Hintergrund.

    Und nun passiert es hin und wieder dass der SettingsDialog einfach nicht sichtbar ist. Auftreten tut das ganze wenn eine andere Anwendung, die man aus dem SettingsDialog starten kann, und die ebenso bildschirmfüllend ist, geschlossen wird. Danach sollte wieder der BackgroundDialog mit dem SettingsDialog davor sichtbar sein. Sehen tut man aber nur den BackgroundDialog . Sobald mal 1x Alt-Tab drückt taucht der SettingsDialog wieder auf.

    Der BackgroundDialog ist dabei ein modaler MFC Dialog. Er hat keinen Parent und ist m_pMainWnd der Anwendung.
    Der SettingsDialog ist modeless (auch MFC) und hat als Parent den BackgroundDialog .
    Der SettingsDialog hat auch keinen Taskbar-Eintrag und tauch z.B. in der Alt-Tab Liste auch nicht auf. Der SettingsDialog wird auch nirgends versteckt.
    Ich habe es auch nicht geschafft den " SettingsDialog nicht sichtbar" Zustand sonst irgendwie zu reproduzieren.

    Kennt jemand das Problem? Bzw. hat jemand eine Vermutung was hier passieren könnte bzw. eine Idee wie man es reproduzieren könnte?

    ps.: OS ist Windows 7 x64, VS/MFC Version ist 2005/8.0


  • Mod

    Kontrolliere mal im Spy++ ob der SettingDIlog wirklich als Parent/Owner den Background hat.

    Wenn ja ist das eigentlich unmöglich... 😉

    Ansonsten kannst Du natürlich auch noch Funktionen wie SetForegroundWindow benutzen um solches zu erzwingen, was eigentlich per se schon sein sollte.

    Ich kenn das nur, wenn das Owner-Verhältnis nicht geklärt ist. D.h. der SettingDialog und der BackgroundDialog sind unabhängige Toplevel Windows.



  • Danke für deine Antwort!

    Haha, ja, eigentlich unmöglich, hätte ich auch gedacht wie ich es programmiert habe.

    Ist aber definitiv so, ich hab es nämlich schon mit Spy++ kontrolliert - Owner-Verhältnis passt 🙂

    Wenn der Fall eingetreten ist, dann "repariert" wie gesagt 1x Alt-Tab die Sache auch wieder. "Permanent", also halt bis zum nächsten mal wo es passiert. Was eben nur vorkommt wenn man ein anderes Programm startet, welches davor aufgeht, und dieses dann wieder beendet. (Bzw. es könnte sein dass es schon vor dem beenden passiert, das sehe ich ja nicht, weil das andere Programm den SettingsDialog komplett verdeckt.) Und das leider auch ganz schlecht reproduzierbar. Manchmal > 40x in Folge alles OK und dann hab ich wieder bei 10 Versuchen 8 wo der SettingsDialog "weg" ist.
    Abgesehen davon hab' ich auch keine Möglichkeit gefunden den SettingsDialog nach hinten zu bringen.


Log in to reply