Dialogfeld soll sich selbst terminieren
-
Hi,
eine, vielleicht ganz dumme Frage, aber ich bekomms nicht auf die Reihe und
die Suchfunktion als auch das VC++ in 21 Tagen können mir nicht wirklich weiter
helfen.Ich habe einen Dialog dlg1, dieser enthält 3 Buttons. Die ersten beiden
sollten dlg2 bzw dlg3 aufrufen und dlg1 terminieren, der dritte soll dlg0
aufrufen und dann ebenfalls dlg1 terminieren.Wie mache ich das?
Die Idee sah folgendermaßen aus:DlgWerkzeugeDialog * d = new DlgWerkzeugeDialog(); d->Create(IDD_3_WERKZEUGE_DIALOG, this); d->ShowWindow(SW_SHOW); d->DoModal(); d->DestroyWindow(); delete d;bzw:
DlgLadenDialog d; int i = d.DoModal(); CDialog::OnCancel();In beiden Varianten wird d allerdings nicht geschlossen sondern verbleibt
im Hintergrund und nervt
Danke im Voraus,
Khadgar
-
Das ist so weil das Programm bei DoModal wartet bis der geöffnete Dialog geschlossen wird bevor der Code weiterausgeführt wird.
Du könntest folgendes machen,wenn die geöffneten Dialoge Modal sein sollen:
1.Eine Integer Variable in dlg1 erstellen.
2.Beim drücken der Buttons diese Variable auf 2,3 oder 0 setzen,und den Dialog schliessen.
3.Im Dialog der dlg1 aufgerufen hat,die Variable Abfragen und den entsprechenden Dialog öffnen
-
Andorxor schrieb:
Das ist so weil das Programm bei DoModal wartet bis der geöffnete Dialog geschlossen wird bevor der Code weiterausgeführt wird.
Du könntest folgendes machen,wenn die geöffneten Dialoge Modal sein sollen:
1.Eine Integer Variable in dlg1 erstellen.
2.Beim drücken der Buttons diese Variable auf 2,3 oder 0 setzen,und den Dialog schliessen.
3.Im Dialog der dlg1 aufgerufen hat,die Variable Abfragen und den entsprechenden Dialog öffnenWas ist die alternative zu modalen Dialogen?
Wie muss ich den denn schliessen? Reicht ein d.EndModalLoop() ?[edit] Das schliessen passt nun (d.EndDialog - War ja einfach ;)) [/edit]