DoModal Dialog ohne button schließen :-?
-
Hallo ,
ich bin gerade dabei ein bißchen Windows Porgrammierung mit Visual C++ 6 zu lernen und habe jetzt eine wohl leichte Verständniss-Frage.
Ich habe einen Dialog erstellt, welchen ich mit DoModal auch aufraufen kann (wie in einem tutorial erklärt). Dann habe einen anderen Dialog erstellt, welcher nicht Modal ist und ich mit ShowWindow(SH_SHOW) anzeigen kann. Klappt auch.
Nun brauche ich aber einen Modal Dialog (damit der Dialog darunter gepserrt ist) der z.b. "Bitte Warten" anzeigt , keinen Schließen button(und kein System menu usw hat) und auf einen Befehl hin wieder geschloßen wird. Genau zu diesem Thema habe ich leider noch gar nichts gefunden...auf dem Dialog mit DoModal-Aufruf klappen die ShowWindow Methoden nicht um umgekehrt

Wenn mir jemand erklären könnte wie man sowas macht wäre ich sehr dankbar :)..und vielleicht noch warum die Mehtoden nicht untereinander anwendbar sind, es basieren doch beide auf CDialog :-? (Oder ich habe es falsch verstanden).
ray
-
Starte in OnInit deines Dialogs einen Timer und rufe in OnTimer CDialog::OnOk auf
-
Hi,
danke für die Antwort, komme aber nicht ganz klar damit
Ich habe zum testen folgendes Probiert :Dlg.DoModal(); um den anzuzeigen....
Dann eine Sxhleife mit berechnungen die etwa 3-4 sekunden dauert
und dann ein OnOK() so wie sagtest.Aber leider kommt nur der dialog...und alles was dann in meiner Funktion steht wird nicht ausgeführt bis ich den dialog wieder mit ALTF4 schließe. Muß ich nach dem DoModel() Dann alle weiteren Aktionen in den neuen Dialog schreiben (inkl. das OnOK()) ? Also in anderen Worten wenn ich nicht mit ALTF4 dieses kleine Fenster zu machen würde, würde ewig das dialogfeld stehen lassen, und nie meine Schleife machen.
Mit dem Timer kann ich (denk ich) nicht arbeiten weil ich den Dlg nicht nach einer bestimmte zeit sondern nach dem beenden einer oder mehrerer Berechnungen wieder ausblenden will
Thx
ray
-
Ja alles muss in den neuen Dialog,mit DoModal wird mit der weiteren Ausführung des Codes gewartet bis der Dialog geschlossen ist.
-
@Andoxor,
thx
Bin gerade dabei das umzubauen. wie kann ich denn aber dann meine Berechnung automatisch starten ? Ein "OnInitdlg()" gibts es meinem kleinen dlg nicht mehr (nur im Hauptdialg)...und wenn ich z.b. in der cpp des neuen Dialogs eine Funktion mache (und im Header den Prototyp) z.b.void Neuerdialog::Test() { ...}
und versuche die dann aufzurufen über
Test; bzw. Neuerdialog::Test(); passiert leider nix

thx
ray