CString an Dialog übergeben
-
estartu_de schrieb:
Ähm, so rum könnte auch gehen, ich meinte, dass du die Variable im Dialog anlegen sollst.
Ach so du meinst:
CDialog2 test; test.x2; //x2 ist eine globale Variable der Klasse CDialog2 test.domodal;
?
Stimmt. Irgendwie stand ich auf der Leitung
-
Ja, das meinte ich.
Kleine Begriffskorrektur noch:
[cpp]test.x2; //x2 ist eine public Variable der Klasse CDialog2 [/cpp]
-
estartu_de schrieb:
Ja, das meinte ich.
Kleine Begriffskorrektur noch:
[cpp]test.x2; //x2 ist eine public Variable der Klasse CDialog2 [/cpp]schon. aber was bringt der aufruf?
Esco
-
Nichts.
Man muss schon was reinschreiben das es Sinn macht. UNd auch die Funktionen richtig schreiben.CDialog2 test; test.x2 = 12; //x2 ist eine globale (hoffe ich nicht für dich) Variable der Klasse CDialog2 test.DoModal();
-
OK, also:
CDialog2:
[cpp]
CString str; //public Variable der Klasse CDialog2, also dem 2. Dialog
[/cpp]CDialog1: //Hauptdialog
[cpp]
CDialog2 test;
test.str="Das ist der zu übergebende String";
test.DoModal();
[/cpp]Wobei mir schon klar war, dass "test.x2" alleine kein sinn macht. Und für die richtige schreibweise gibt es Intellisense. Tschuldigung, das war jetzt ne DAU antwort.
-
andy99 schrieb:
OK, also:
Tschuldigung, das war jetzt ne DAU antwort.
War ja auch eine DAU-Frage.
Hat übrigend nichts mit MFC zu tun sondern sind Grundlagen von C++.
-
Also, klar hätte man den Code so nicht kompilieren können - aber Andy schien verstanden zu haben, was er machen muss. Das reichte doch.
-
Moment mal. Falls du den thread gelesen hättest, dann hättest du verstanden, dass ich schon hab, wie man es über variablen löst(ok, ich kam nicht gleich drauf, lag aber eher an der tagsform
). Meine Frage war schon mfc spezifisch, da ich gefragt hab, ob man ne variable an einen dialog übergeben kann. Sowas wie "DoModal(Variable1, Variable2)", was zur Lösung des Problems nicht nötig gewesen wäre, aber meinen Horizont bezüglich mfc erweitert hätte. Und dazu ist das Forum ja da , oder nicht ?
-
andy99 schrieb:
Sowas wie "DoModal(Variable1, Variable2)"
Kannst du auch machen. Dazu brauchst du
virtual int DoModal(CString strEins, CString strZwei);
im Header und
int DeineDialogklasse::DoModal(CString strEins, CString strZwei) { // Mach was return CDialog::DoModal(); }
in der cpp. Und aufrufen kannst du das dann so, wie in dem Zitat.
-
Ok,
also ist die Lösung einfach:
Überschreiben der DoModal-Funktion des 2. Dialogs.Und nochmal zur Aufklärung an alle die es interssiert:
Der 2. Dialog besteht nur aus einem Edit-Feld, dass den übergebenen String anzeigt. Dieser Dialog wird an mehreren Stellen im Programm aufgerufen und ich finde es in diesem Fall einfach intuitiverpopup.DoModal("Zeichenkette");
als
popup.str="Zeichenkette"; popup.DoModal();
zu schreiben. Man könnte zwar in die erste Klasse ne Fkt schreiben die das erledigt:
void popup(CString str) { CDialog2 test; test.str=str; test.DoModal(); }
Aber es gibt ja meistens mehrere Möglichkeiten und es ging mir ja auch um die "Horizonterweiterung".