HILFE Variable bleibt 0
-
Ich habe zwei DLG Klassen in der ich von der Klasse AdditionDlg
die Klasse AnzahlDlg aufrufe.
m_nehme_Anzahl ist eine Membervariable der Klasse AdditionDlgvoid AdditionDlg::OnBUTTONOption() { AnzahlDlg myDlg; myDlg.DoModal();//neuer Dialog wird geöffnet //AdditionDlg bleibt im Hintergrund offen }
Dort habe ich ein Editfeld vom Typ int wo ich etwas eingeben kann.
Übergeben tue ich die Variable so >>neu<< ist eine Abgeleitete Klasse von
AdditionDlgvoid AnzahlDlg::OnWeiter() { UpdateData(TRUE);//wert wird in die Variable geschrieben neu.m_nehme_Anzahl = m_Anzahl_gestellt;//wert wird in die andere Klasse geschrieben AnzahlDlg::EndDialog(-1);//Dialog wird geschlossen }
Erwähnt soll sein das die Klasse
AdditionDlg nicht geschlossen wirdDer Aufruf der Variable erfolgt wie immer und wird in einer
MessageBox zum Test ausgegebenvoid AdditionDlg::OnAufgabe() { CString Textausgabe;//Dekleration Textausgabe.Format("%d",m_nehme_Anzahl);//Formatierung MessageBox(Textausgabe);//Testausgabe Zeitrueckgabe_Rechenzeit[0] = 0;//Array wird mit Wert 0 gesetzt Zeitrueckgabe_Rechenzeit[1] = 0;//keine schleife da Werte später Zeitrueckgabe_Rechenzeit[2] = 0;//geändert werden Zeitrueckgabe_Rechenzeit[3] = 0; Zeitrueckgabe_Rechenzeit[4] = 0; SetTimer ((UINT) 2, 100, NULL ); //setzt Timer auf 1/10 sec GetDlgItem(IDCANCEL)->EnableWindow(FALSE);//Abbruchbutton wird deaktiviert cToolBar.ShowWindow(SW_HIDE);//Toolbar wird ausgeblendet ... ... ...
Mein eigendliches problem ist das die Zahl nicht übergeben wird und die
Ausgabe immer 0 bleibt
Ich bekomme keine FM
Habe ich einen Denkfehler?Danke
Vossy
-
Also, du solltest abfragen ob der Dialog mit ok beendet wird:
if(myDlg.DoModal == IDOK) m_var = m_neuevar;
Devil
-
Übergib doch einfach bei myDlg.DoModal(); den this-Zeiger. Diesen kannst du dir dann bei myDlg::DoModal(CWasAuchImmer lpoDlg) in deiner Klasse benutzen/Speichern, was immer du willst!
-
Danke euch aber
devil81
ich sehe in deiner Prüfung keinen sinn da ich OnOK nicht nutze.zu Hexagon
Deine Idde ist gut aber selbst da funktioniert das nicht
Hast du noch eine IdeeSchon hundert mal gemacht und das geht jetzt hier nicht.
Das ist schon zum ärgern. So etwas einfachen und ich hänge.
Andere Übergaben funktionieren doch auch in meinem Prog.
Warum hier nichtVossy
-
Du Hexagon
schreibe mal deine Möglichkeit etwas genauer denn
vieleicht mach ich ja auch einen FehlerVossy
-
Er meint do sollst DoModal so überschreiben das du den this zeiger bei DoModal
übergeben kannstDevil
-
Bingo! Genau so!
void AdditionDlg::OnBUTTONOption() { AnzahlDlg myDlg; myDlg.DoModal(this);//neuer Dialog wird geöffnet //AdditionDlg bleibt im Hintergrund offen }
void AnzahlDlg::DoModal(AdditionDlg *lpoDlg) { if(IDOK == CDialog::DoModal()) { lpoDlg->m_nehme_Anzahl = m_wie_auch_immer; } }
[ Dieser Beitrag wurde am 22.10.2002 um 13:05 Uhr von Hexagon editiert. ]
-
Wäre nicht folgendes einfacher:
void AnzahlDlg::OnOk() { AdditionDlg *lpoDlg = (AdditionDlg *)GetParent(); lpoDlg->m_nehme_Anzahl = m_wie_auch_immer; }
-
Hallo Hexagon
mit der Methode geht es nicht
hat sich übrigens nicht viel von meiner unterschiedenaber mit
RenéG
seiner Möglichkeit geht es
obwohö es eigendlich das gleiche ist.Da ich hier heinen Haltepunkt setzen kann kann ich es
auch nicht analysieren.Danke euch allen.
Vossy