Anwendung schließt sich nicht???



  • hallo, habe ein programm geschrieben, in dem man sich durch ein paar dialoge durchklickt, aber wenn ich jedoch in den startdialog zurückkehre, und es nun mit meinem exit button beenden will, sind noch alle anderen fenster geöffnet.
    gibt es einen befehl, die anwendung zu beenden?

    void CStartDlg::OnExit()
    {
        CDialog::OnOK(); //wie müsste es denn heissen um alles zu beenden???
    }                    //destroy exe :eek:  :confused:  :mad:
    

    dankeschön jens



  • Ich nehme an, dass die anderen Fenster alle nicht modal sind. Die einfachste Lösung ist, dass du jedes einzelne Fenster mittels CDialog2::OnOK(); zu schließen, wenn du auf den gewünschten Button klickst.



  • rufe eigentlich alle über DoModal() auf...
    meinst du so etwas wie:

    void Dialog1::OnOK()
    {
        Dialog2 dlg2;
        dlg2.DoModal();
        //weiss ich nicht: close Dialog1
    }
    


  • ähh, das würde mich interessieren, wie du es schaffst 2 Dialoge gleichzeitig mit DoModal() anzuzeigen ... Ich vermute aber mal was anderes: Du hast den Hauptdialog und einen zweiten Dialog. Wenn du jetzt auf den Hauptdialog auf Beenden klickst passiert nix. Ist dem so?

    Wenn den dem so sei, dann kann ich nur in der Kürze sagen, daß dein Hauptdialog nicht aktiv ist, sondern er noch immer in der DoModal-Schleife des aufgerufenen Dialogs hängt.



  • DaDings schrieb:

    ähh, das würde mich interessieren, wie du es schaffst 2 Dialoge gleichzeitig mit DoModal() anzuzeigen ...

    versteh ich jetzt nicht, wieso würde dich das interessieren ?
    Geht doch ohne probs.



  • Um auf das eigentliche Prob. zurückzu kommen, also wenn du doch mit DoModal()
    alle Dlgs, öffnest, dann beendest du diese doch entweder mit dem OK oder dem Abbruch - Button, dann sollten diese sich eigentlich von alleine wieder schließen.



  • 😞
    bin bissi dumm musst du wissen :p
    also wenn ich von dialog1 auf dialog2 umschalte, von 2 auf Dialog3 ist ja alles wunderschön, aber wenn ich nun von dlg3 wieder in dlg1 springe und über exit beenden will, kommen automatisch wieder dlg2 und dlg1
    thx



  • Also wenn ich richtig informiert bin, (was ich keineswegs behaupte), ist domodal halt domodal. Erst beim beenden des einen Dialogs macht das Programm unter der Zeile DoModal weiter. Die sogenannte Modalloop harrt der Dinge die da kommen.

    Falls ich mich irre, würd mich aber dann doch ein kleiner Codeschnipsel interessieren



  • also, ich glaube ich muss erstma darüber schlafen, was ich eigentlich will... 😞
    aber gibt es einen befehl zum beenden der anwendung(der alle dialoge schliesst!)?



  • DaDings schrieb:

    Also wenn ich richtig informiert bin, (was ich keineswegs behaupte), ist domodal halt domodal. Erst beim beenden des einen Dialogs macht das Programm unter der Zeile DoModal weiter. Die sogenannte Modalloop harrt der Dinge die da kommen.

    Falls ich mich irre, würd mich aber dann doch ein kleiner Codeschnipsel interessieren

    Joo, das hast du auch soweit richtig interpretiert,
    man kann aber, wenn ich angenommen Dlg1.DoModal() aufrufe,
    aus dem Dlg1 heraus den Dlg2, von Dlg2 den Dlg3 usw. mit DoModal() aufrufen. 😃
    Ich galube das der jens13 dat meinte oder net?


Anmelden zum Antworten