brauche nochmal Hilfe
-
Hi,
kann mir jemand verraten warum dieser Code nicht funktioniert.
Ich speichere in m_strDatum das Datum aus dem CKalenderDlg und möchte es erst mal zur Kontrolle in einer MessageBox in dem CNotizDlg ausgeben, die MessageBox erscheint auch wenn ich den CNotizDlg öffne, aber leider ist sie leer.
Kann mir jemand sagen was ich falsch mache.BOOL CNotizDlg::OnInitDialog()
{
CDialog::OnInitDialog();// TODO: Zusätzliche Initialisierung hier einfügen
UpdateData(TRUE);
CKalenderDlg *pKalender = new CKalenderDlg;
m_strNotiz = pKalender->m_strDatum;
MessageBox(m_strNotiz);return TRUE;
}MfG
Und vielen Dank schonmal!
-
Wo füllst du denn die Variable m_strDatum?
-
Ich fühle sie in CKalenderDlg, aus einem Listefeld wird der Monat ausgewählt und die Tage sind einzeln als Buttons.
Ich habe mir in diesem Dialog m_strDatum auch schon mit einer MessageBox anzeigen lassen und es steht alles genau drin.
Nur in dem 2.Dialog bleibt sie leer.
-
Hallo zusammen,
Ich fühle sie in CKalenderDlg
und? Wie fühlt sie sich an?
Sorry, aber der war zu gut...
Zum Thema:
CKalenderDlg *pKalender = new CKalenderDlg; m_strNotiz = pKalender->m_strDatum; MessageBox(m_strNotiz);
In diesem Code wird der Dialog CKalenderDlg gar nicht 'aufgerufen'. Es fehlt
pKalender->DoModal();
Das ist dir klar, nehme ich an. Das heißt von CKalenderDlg wird in obigen Code nur der Konstruktor aufgerufen. Wenn du dort m_strDatum initialisierst (also fühlst :D), dann muss das eigentlich auch gehen.
Grüße, Volle.
[ Dieser Beitrag wurde am 28.08.2002 um 11:36 Uhr von Volle editiert. ]
-
Das mit dem fühlen habe ich schon gemerkt, aber es weiß ja jeder was ich meine hoffe ich, ich musste auch selber lachen!
Ich öffne ja erst CKalenderDlg das ist mein Start-Dialog und dann den CNotizDlg und da laß ich mir zur Kontrolle die (leider noch leere)
MessageBox ausgeben.
-
Original erstellt von <Triplleh>:
Ich öffne ja erst CKalenderDlg das ist mein Start-Dialog und dann den CNotizDlg und da laß ich mir zur Kontrolle die (leider noch leere)
MessageBox ausgeben.Dann darfst du den Kalenderdialog nicht neu instantiieren.
Du musste deinem Notizdialog einen Zeiger auf deinen schon vorhandenen Dialog mitgeben.
-
Meinst Du das so, wenn ich das in meinem NotizDlg schreibe, bleibt alles unverändert.
CKalenderDlg pKalender;
m_strNotiz = pKalender.m_strErgebnis;
MessageBox(m_strNotiz);
-
Du hast deinen KalenderDialog als Startdialog und klickst dann auf nen Button, so dass sich der Notizdialog öffnet.
Dein Notizdialog weiß aber erstmal nichts von dem KalenderDialog.
Am einfachsten ist es wenn du es so machst:Eine Kalenderdialog-Zeiger als Membervariable in den Notizdialog einfügen.
//NotizDlg.h public: CKalenderDlg *m_pKalDlg;
Diesen dann im Konstruktor des NotizDlg mit 0 initialisieren.
CNotizDlg::CNotizDlg() { m_pKalDlg = 0; }
Und dann kannst du folgendes in deine OnButtonNotizDlg schreiben:
CNotizDlg dlg; dlg.m_pKalDlg = this; dlg.DoModal();
In OnInitDialog des Notizdialoges schreibst du dann:
if( m_pKalDlg) { m_strNotiz = m_pKalDlg->m_strDatum; MessageBox(m_strNotiz); }
-
Vielen Dank, werde es sofort ausprobieren!
-
Es funzt soweit, bis auf das beim ersten Klick nichts angezeigt wird und bei dem nächsten Klick das Datum vom vorhergehenden usw..
Ich habe für jeden Tag einen Button auf den ich Klicke, ich hoffe Du verstehst das jetzt wie ich das meine.
-
Original erstellt von <Triplleh>:
ich hoffe Du verstehst das jetzt wie ich das meine.Nee, nich wirklich.
Poste doch mal den Code deiner OnClick-Funktion(en).
-
Rufst du auch in deiner OnClick-Methode in deinem Hauptdialog auch UpdateData(TRUE) auf? Dann wird nämlich erst die Membervariable gefüllt.
-
Hab den Fehler gefunden, ich habe für die ganze Datumsermittlung und speicherung eine Funktion geschrieben und die dann bei jedem Button aufgerufen. Jetzt habe ich Deine OnKlick Funktion hinter jeden Button gelegt und es geht, vorher hatte ich diese mit in der Funktion die ich bei jeden Button aufrufe.
Das liest sich voll kompliziert, aber jetzt geht es Vielen Dank.MfG
-
Nochmal ne Möglichkeit:
Wieso nicht einfach in der OnCNotizDlg - Funktion folgendes einfügen:
CNotizDlg dlg; UpdateData(TRUE); dlg.m_strNotiz = m_strDatum; //Ich weiß nicht mehr wie deine Member //genau heißen dlg.DoModal();
und dann in OnInitialUpdate von CNotizDlg:
AfxMessageBox(m_strNotiz);
Gruß
Stalin