CDialog::OnOK() - ändert Inhalt von Variablen????
-
Hi Leute,
Ich hab eine Dialoganwendung erstellt. In diese habe ich einen Dialog eingefügt, die dazugehörige Klasse heißt CDatenDlg. (Die vom Hauptdialog heißt CCivilChartXLDlg). Nun rufe ich diesen Daten-Dialog per DoModal() auf und lasse den User dort Daten in Form von 1 Wort und 2 Zahlen eingeben. Das wären einmal die Altersgruppe und jeweils einmal die Bevölkerungszahl für das jeweilige Geschlecht. Macht drei Eingabefelder. Und um die eingegebenen Daten anzuzeigen, befinden sich im selben Dialog noch 3 Listboxen, in die die eingegebenen Werte hinzugefügt werden. Zusätzlich dazu lese ich jedesmal, wenn der User einen Wert (z.B. eine Altersgruppe) eingibt, diesen in einen CString- bzw. long-Array ein. Jeder Array hat Platz für 100 Einträge. Ich kontrolliere natürlich die Anzahl der schon eingegebenen Werte und stoppe den user bei 100 Einträgen.
Wenn der User diesen Daten-Dialog nun schließt, geht's im Hauptprogramm weiter. Logisch, hab ihn ja per DoModal() aufgerufen (also den Daten-Dialog). Um nicht durcheinanderzukommen mit den ganzen Arrays und Variablen, habe ich eine Klasse namens CCivilChart geschrieben, die die alle verwaltet. Sie beinhaltet also Member-Variablen für die schon angesprochenen 3 Arrays, außedem noch 8 Arrays für die Koordinaten der Balken (es soll im Endefekt ein Diagramm erstellt werden...), und und und. Es sind auch 3 Member-Variablen vorhanden, die die Anzahl der eingegebenen Einträge speichern. Soweit, so gut und so fehlerfrei.
Jetzt ist die Klasse fertig, ich hab eine Instanz im Daten-Dialog und eine Instanz im Hauptdialog angelegt (als Member-Variablen, dann kann man so schön darauf zugreifen:CDatenDlg pDatenDlg; if(pDatenDlg.DoModal() == IDOK) { pCC.SetAges(pDatenDlg.pCC2.GetAges()); }
Zum Beispiel natürlich nur. Die Definition der Methoden ist ja hier glaub ich uninteressant, es soll bloß gezeigt werden, wie ich auf die Instanzen zugreife.
pCC ist die Memberinstanz im Hauptdialog
pCC2 ist die Memberinstanz im Daten-DialogSoweit alles klar? Es funktioniert wirklich alles super, bis zu dem Moment, in dem ich die Informationen von pCC2 nach pCC transferieren will. Da kommt echt nur Müll an. Sonst nix. Nehmen wir mal an, der User hat 4 Altergsgruppen eingegeben, dann ist pCC.m_lAges = 4.
Im Hauptdialog kommt aber, wenn ich die Daten mit dem oben genannten Code hole nur so was wie 2435124100 an. Also völliger Schwachsinn.Daher: Wo liegt der Fehler bei dem Transfer der Daten? Verwurschtelt mit das Schließen des Daten-Dialogs per CDialog::OnOK() die ganzen Werte oder was?
Happosai
-
Was passiert bei SetAges/GetAges und wie sehen die Funktionen aus?