Probleme mit einem Dialog (DoModal())
-
Hallo zusammen,
ich habe einen TabControl dieser ist mit Dialogen belegt. In einem dieser Dialoge befindet sich eine Check Box, wenn diese Check Box aktiviert wird soll sich ein Dialog öffnen der Modal sein soll. Leider ist es so das der Dialog sobald er aufgerufen wird mit DoModal() einen Ausnahme Fehler verursacht und das Programm abstürtzt. Kann mir vielleicht jemand sagen woran das liegt und wie man das lösen könnte????
Hier mal der Code so wie ich es versucht habe:
CCommentDlg *comment = new CCommentDlg(GetParent()); comment->Create(IDD_COMMENT, this); comment->m_CommentCtrl.SetParaFormat(para); comment->SetWindowText("Eingabe"); comment->DoModal();Grüße
Wild
-
Wildcard schrieb:
CCommentDlg *comment = new CCommentDlg(GetParent()); comment->Create(IDD_COMMENT, this); comment->m_CommentCtrl.SetParaFormat(para); comment->SetWindowText("Eingabe"); comment->DoModal();
CCommentDlg comment; // comment.m_CommentCtrl.SetParaFormat(para); Das ist böse, du darfst nicht vor DoModal auf Controls zugreifen. Mach dir Hilfsvariablen (s.u.) // comment.SetWindowText("Eingabe"); Das musst du anders lösen, z.B. über eine Stringvariable im Dialog und ein SetWindowText in OnInitDialog. comment.DoModal();
-
Ohh danke schön, das klappt jetzt auch soweit. Bloß habe ich jetzt das Problem das ich aus dem Dialog einen Text aus lesen muss aber sobald er schließt ja nichts mehr da ist zum auslesen.... wie komm ich denn nachher an den Text??
Hier mal der Code so wie ich dachte das es funktioniert:
if (m_CommentCheckCtrl.GetCheck()) { CCommentDlg *comment = new CCommentDlg(GetParent()); if (comment->DoModal() == 1) { CString text; comment->m_CommentCtrl.GetWindowText(text); } }
-
Ich habs. Habe mir eine Hilfsvariable angelegt die ich nachher auslese.
Danke für die Hilfe estartu

-
Naja, das Ganze jetzt einfach umgekehrt. Beim Schließen des Dialogs (zb OnOK()) den gewünschten Text in eine Membervariable kopieren, die man nachher auslesen kann.
OK, habs gerade gesehen, war zu langsam :p
-
@Wildcard:
Ich verstehe nicht wieso du hier "new" verwendest.
Hat das einen bestimmten Grund, oder einfach nur weil du das so kennst, und keinen Grund siehst von bekanntem abzuweichen?Immerhin musst du den Dialog irgendwo wieder löschen (delete) wenn du ihn mit "new" anlegst. Wenn du ihn dagegen "einfach so" (mit "automatic storage" aka. "auf dem Stack") anlegst musst du dich eben gerade nicht darum kümmern - was viel praktischer (und sicherer) ist.
-
dwo77 schrieb:
Naja, das Ganze jetzt einfach umgekehrt. Beim Schließen des Dialogs (zb OnOK()) den gewünschten Text in eine Membervariable kopieren, die man nachher auslesen kann.
OK, habs gerade gesehen, war zu langsam :p
Aber trotzdem hast du deinen Beitrag noch abgeschickt (denn der letzte Satz war kein Edit...).

-
Schließlich sollte man doch erkennen, dass der gute Wille vorhanden war! :xmas2: