Dialogbasierte Anwendung: Neues Dialogfeld öffnen und altes schließen



  • Hallo,

    ich habe folgendes Problem: Ich möchte in einer Dialogfeld-Anwendung vom ersten Dialogfeld ein zweites starten (funktioniert), dieses Zweite soll ein Drittes starten usw.

    Der letzte Bildschirm soll jedes mal geschlossen werden, sobald der Neue geöffnet wird. Im Moment schließt sich aber jedes Mal auch der aktuelle Bildschirm mit.

    Ich öffne den jeweils neune Dialog auf folgende Weise:

    CNeuerDialog *pDlg = new CNeuerDialog;
    pDlg -> Create(IDD_NEUERDIALOG, this);
    pDlg -> ShowWindow(SW_SHOW);
    

    Am Ende möchte ich dann wieder zum ersten Dialog zurückkehren.

    Vielen Dank für eure Hilfe,
    Krommi



  • Falls du nichts gegen modale Dialoge hast, hätte ich eine Lösung für dich:
    Der OK Knopf macht immer den nächsten Dialog auf.

    CDialog1 dlg1;
    if (IDOK == dlg1.DoModal())
    {
        CDialog2 dlg2;
        if (IDOK == dlg2.DoModal())
        {
        // usw.
        }
    }
    

    🙂



  • Hmm...hatte ich auch schon überlegt, geht aber nicht, weil ich z.B. auch mal von Dialog5 zu Dialog3 springen möchte. Gibt es keine andere Möglichkeit?



  • Doch klar:

    In Dialog1 in OnOK:

    CDialog2 dlg2;
    CDialog::OnOK(); // Macht zu
    dlg2.DoModal();
    

    🙂



  • Was hälst du von der Möglichkeit, es so zu machen wie der Installer?
    Wo man mit seinem next-immer zur nächsten Oberfläche springt, aber im selben Dialog bleibt? Da gibt es schon ne Unerstützung in der MFC für sowas. Müsst ich mal in meinem CPP-Ordner kramen, hab das mal ausm Buch zu Übungszwecken nachgetippt.



  • Wizard heißt das.

    Pellaeon, falls du mehr oder besseres hast, als die Faq, dann immer her damit. 😃



  • estartu schrieb:

    Wizard heißt das.

    Pellaeon, falls du mehr oder besseres hast, als die Faq, dann immer her damit. 😃

    *lol* tatsächlich ist schon in der FAQ 🙂 An sich ist da ja fast alles gesagt.


Anmelden zum Antworten