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
FloHab 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. ]