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 demSettingsDialog
starten kann, und die ebenso bildschirmfüllend ist, geschlossen wird. Danach sollte wieder derBackgroundDialog
mit demSettingsDialog
davor sichtbar sein. Sehen tut man aber nur denBackgroundDialog
. Sobald mal 1x Alt-Tab drückt taucht derSettingsDialog
wieder auf.Der
BackgroundDialog
ist dabei ein modaler MFC Dialog. Er hat keinen Parent und istm_pMainWnd
der Anwendung.
DerSettingsDialog
ist modeless (auch MFC) und hat als Parent denBackgroundDialog
.
DerSettingsDialog
hat auch keinen Taskbar-Eintrag und tauch z.B. in der Alt-Tab Liste auch nicht auf. DerSettingsDialog
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
-
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 derSettingsDialog
"weg" ist.
Abgesehen davon hab' ich auch keine Möglichkeit gefunden denSettingsDialog
nach hinten zu bringen.