Rückgabewerte eines Dialogs



  • Hallo!

    Wenn ich einen modalen Dialog erstelle, in dem ich z.B. irgendwelche Textfelder fülle, wie kann ich dann am besten / sinnvollsten dessen Inhalt an das aufrufende Fenster/Dialogfeld zurückgeben?

    Gibt es Standardmethoden, die das übernehmen? Oder muss man das über eigene Funktionen lösen?

    (Ich hab ja schon viel programmiert - aber Windows Programmierung mit der MFC ist das am wenigsten intuitive Programmieren, dass ich je gesehen hab 😉 vielleicht liegts aber auch nur an der *schrecklichen* Hilfe ...)

    MfG
    Florian



  • Probiers mal so:

    #include "MeinDialog.h"
    ...
    CMeinDialog dlg;
    dlg.DoModal();
    CString sTest;
    sTest = dlg.m_sEdit1;
    ....
    


  • Ja gut ... *grummel* ... sind die Member Variablen für Controls immer public?

    Wie kann ich denn auf Methoden des Parentwindow zugreifen? Ich würd die Eingabe gern in OnOK() noch überprüfen - aber die Funktion dafür "gehört" dem Parentwindow.

    (Ich glaub, es is einfach zu spät, um selbst nachzudenken)

    MfG
    Florian
    P.S.: Schon mal danke für die schnelle Hilfe!

    [ Dieser Beitrag wurde am 13.08.2002 um 20:17 Uhr von F. Haskamp editiert. ]



  • Sorry, aber jetzt verstehe ich nicht was du meinst.
    Wenn du die Eingabe überprüfen möchtest, kannst du einfach die OnOK() Funktion überschreiben.

    CMeinDialog::OnOK()
    {
       UpdateData();
    
       if(m_sEdit == "Test")
           CDialog::OnOK();
    }
    


  • Die Überprüfung der Eingabe ist n bischen umfangreicher - aber die Funktion, die dies vornimmt ist eine Methode des aufrufenden Dialogs.

    Ich möchte jetzt also einfach diese Methode (des Parentwindow) aufrufen, um die Eingabe zu checken - das mit dem OnOK() is klar. Weiß nur nicht, ob bzw. wie ich das mach. (Also ein Dialog hat n paar Methoden und ruft einen modalen Dialog auf - der wiederum soll auf die Methoden zugreifen)

    MfG
    Flo

    Hab schon eine Lösung gefunden -> dem Konstruktor des Dialoges wird ein Zeiger auf den aufrufenden Dialog übergeben, also:

    CMyDlg dlg(this)
    

    und dann wird im Konstruktor der Zeiger in eine Membervariable gesichert - auf welche man dann überall zugreifen kann.

    Kommentare zu dieser Lösung sind erwünscht! 😉

    [ Dieser Beitrag wurde am 13.08.2002 um 23:02 Uhr von F. Haskamp editiert. ]


Anmelden zum Antworten