Datenkommunikation zwischen Popups
-
Hi
ich rufe aus OnOK() des einen Dialogs einen neuen Dialog auf:
void CDlgClassName::OnOK() { do_stuff(); CSubDlgClassName newDlg; newDlg.DoModal(); do_other_stuff(); }Ich möchte nun bei do_other_stuff je nach dem, ob newDlg mit onOK() oder mit OnCancel() beendet wurde, etwas anderes tun. Ausserdem soll der Inhalt von newDlg dynamisch sein, je nach bisherigem Programmverlauf, und der zukünftige Programmverlauf soll von den Daten, die der Benutzer in newDlg eingibt, abhängen. Daher:
Wie können die Dialogfenster miteinander kommunizieren? Ich brauche keine live-Datenübertragung, sondern nur eine Art Initialisierung und Datenrückgabe.
Danke für eure Hilfe!
-
OnOK vs. OnCancel kannst du über den Rückgabewert von DoModal unterscheiden.
Ansonsten sind Dialogklassen mit MFC ganz normale Klassen, du kannst also Member da drinnen anlegen, die vom Dialog (z.B. in OnOK) befüllen lassen und dann weiter verwenden.
Genauso kannst du z.B. einen eigenen Konstruktor schreiben der irgendwelche Parameter hat die du zum Initialisieren des Dialogs verwendest (startwerte setzen).Der Aufruf des 2. Dialogs könnte dann vielleicht ca. so aussehen:
void CDlgClassName::OnOK() { int x = do_stuff(); CSubDlgClassName newDlg(x, this); if (newDlg.DoModal() == IDOK) { do_other_stuff(newDlg.GetY()); CDialog::OnOK(); } }
-
Ich danke dir für die Antwort, das löst mein Problem.