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
SettingsDialogeinfach nicht sichtbar ist. Auftreten tut das ganze wenn eine andere Anwendung, die man aus demSettingsDialogstarten kann, und die ebenso bildschirmfüllend ist, geschlossen wird. Danach sollte wieder derBackgroundDialogmit demSettingsDialogdavor sichtbar sein. Sehen tut man aber nur denBackgroundDialog. Sobald mal 1x Alt-Tab drückt taucht derSettingsDialogwieder auf.Der
BackgroundDialogist dabei ein modaler MFC Dialog. Er hat keinen Parent und istm_pMainWndder Anwendung.
DerSettingsDialogist modeless (auch MFC) und hat als Parent denBackgroundDialog.
DerSettingsDialoghat auch keinen Taskbar-Eintrag und tauch z.B. in der Alt-Tab Liste auch nicht auf. DerSettingsDialogwird auch nirgends versteckt.
Ich habe es auch nicht geschafft den "SettingsDialognicht 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
SettingsDialogkomplett 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 denSettingsDialognach hinten zu bringen.