Attribut übergeben
-
Hallo
ich hab hier ne Dialoganwendung bestehend aus 2 dialogen. In den Hauptdialog, der automatisch miterstellt wird, ist ein Attribut namens "Vorsatz". Ist ein Integer.
int Vorsatz;
Wenn ich diesen Wert jedoch eingeben will, muss ich auf einen Button klicken, der wiederum einen neuen Dialog öffnet.
Dialog2 Handle; Handle.DoModal();
In diesem Dialog ist ein Eingabefeld, auf dessen eine Member deklariert ist.
int m_intVorsatz;
wenn ich dann auf den ok Button klicke, soll die Zahl übernommen werden
UpdateData(TRUE);
der Dialog geschlossen werden
OnOK();
und die Zahl, die ich gerade eingegeben habe, in dem Attribut von dem Hauptdialog geschrieben werden. Und genau das ist mein Problem. Wie mach ich das? Wenn ich die Instanz von dem Hauptdialog selber erzeugt hätte, würde ich die einfach mit übergeben lassen, wenn sich der neue Dialog öffnet und von dort aus dann in das Attribut schreiben. Aber geht irgendwie nicht.
Bin dankbar für eure Hilfe
-
MSS-Software schrieb:
Aber geht irgendwie nicht.
Zeig mal deinen Versuch.
Vielleicht ist es nur eine Kleinigkeit.
-
ja, da fängt das Problem an *ggG*
ich hab keine Idee
wenn ich eine Methode nur für die übergabe unter DoModal() setze, bringt das auch nichts, weil wenn er an DoModal() vorbei ist, ist auch die Instanz nicht mehr da
und wenn ich vor OnOK() übergeben will, müsste ich ne neue Instanz erzeugen
das wiederum ist auch nicht hilfreich, weil ich den wert dann in der neuen Instanz habe und nicht in der alten
-
Also so wie ich das sehe hast du vergessen den Wert den du einlesen möchtest auf die member variable zu schreiben.
Heisst: wenn du auf den OK Button klickst musst du den Wert auf die Member speichern. Dazu musst du auch eine Control-Membervariable des Editierfeldes anlegen.CString str; m_member_des_EditierfeldesC.GetWindowText(str); sscanf(str,"%d",&m_intVorsatz); OnOK();
Jetzt hast du nach verlassen des zweiten Dialogfeldes deinen Integerwert auf der Member. Um diesen in deinem Hauptdialogfeld zu benutzen schreibts du hinter dem Handle.DoModal();
Vorsatz=Handle.m_intVorsatz;
müsste so klappen, habe es leider vorher nicht testen können.
-
MSS-Software schrieb:
wenn ich eine Methode nur für die übergabe unter DoModal() setze, bringt das auch nichts, weil wenn er an DoModal() vorbei ist, ist auch die Instanz nicht mehr da
Wie kommst du darauf? Sicher ist die noch da.
Dialog2 Handle; Handle.DoModal(); Vorsatz = Handle.m_intVorsatz;
-
erst bei
Handle.DestroyWindow()
ist sie weg
-
jo, funktioniert auch wunderbar
thx
ich hab jetzt ehrlich gedacht, dass die Instanz damit weg is
aber gut
um so besser
thx
-
Polofreak schrieb:
erst bei
Handle.DestroyWindow()
ist sie weg
Nein. DestroyWindow "passiert", bevor DoModal zurückkommt. Das beeinflussst aber Wert-Member der Dialogklasse nicht.
-
dann könnte ich ja schon viel früher destroyen! muss ich gleich mal schauen!
DANKE!
-
MFK schrieb:
Das beeinflussst aber Wert-Member der Dialogklasse nicht.
Genau.
Wert-Member kann man im Nachhinein nutzen.
Control-Member nicht.
-
ey, dann Destroy ich aber auch
und zwar alles *Ggg*