DeathKid Geschrieben 23. Juni 2008 Geschrieben 23. Juni 2008 Hallo zusammen, nach nun mehr als zwei Stunden Foren durchkämmen und Mitarbeiter fragen weiß ich nun nicht mehr weiter. Vielleicht kann mir ja hier einer helfen. Ich habe folgendes Problem: Von einem normalen C++-Formular aus rufe ich einen Dialog Modal auf. Das funktioniert noch prächtig. Wenn ich jetzt allerdings noch bevor der Bediener etwas tut verschiedene Überprüfungen mache, und zum Schluss komme, dass er doch nichts tun darf, möchte ich eine Fehlermeldung (auch Modal) erzeugen und danach automatisch meinen modalen Dialog schließen. Die Fehlermeldung kommt zwar noch, und er tut auch immer so, als würde er den Befehl modalresult = mrcancel durchlaufen, aber er schließt das Formular nicht. Ich habe schon alles mögliche versucht.. die Fehlermeldung weglassen, das Ganze in verschiedenen Events werfen (OnCreate, OnShow, OnActivate, OnPaint..), etc. Nichts hilft, mein Formular bleibt offen. Hat jemand eine Ahnung, woran das liegen könnte? Danke im Voraus, DK Zitieren
Klotzkopp Geschrieben 23. Juni 2008 Geschrieben 23. Juni 2008 Von einem normalen C++-Formular ausEs gibt keine "normalen C++-Formulare" Nach deinen Bezeichnern zu urteilen, benutzt du aber anscheinend die MFC. Ich habe schon alles mögliche versucht.. die Fehlermeldung weglassen, das Ganze in verschiedenen Events werfen (OnCreate, OnShow, OnActivate, OnPaint..), etc. Nichts hilft, mein Formular bleibt offen.Es sollte ausreichen, wenn du in OnCreate -1 zurückgibst. Hast du das versucht? Zitieren
TDM Geschrieben 23. Juni 2008 Geschrieben 23. Juni 2008 Warum zeigst du nicht einfach nur den Fehlerdialog und lässt den modalen Dialog weg, NACHDEM du die "Überprüfungen" gemacht hast? Wenn der Benutzer eh nicht interagieren kann, dann kannst du evtl. Werte ja auch im Elternframe abprüfen. :confused: Zitieren
DeathKid Geschrieben 23. Juni 2008 Autor Geschrieben 23. Juni 2008 Ja, MFC, mein ich doch Ich sag doch, ich hab alles versucht.. -1 zurückgeben ist ja dasselbe wie mrCancel/mrOk etc. Und wie schon gesagt, das habe ich in allen möglichen Events versucht. Es funktioniert nicht. Er wirft mir ja nicht einmal einen Fehler, und mit dem Debugger läuft er da brav drüber, tut aber nichts. Zitieren
DeathKid Geschrieben 23. Juni 2008 Autor Geschrieben 23. Juni 2008 Warum zeigst du nicht einfach nur den Fehlerdialog und lässt den modalen Dialog weg, NACHDEM du die "Überprüfungen" gemacht hast? Wenn der Benutzer eh nicht interagieren kann, dann kannst du evtl. Werte ja auch im Elternframe abprüfen. :confused: Kann ich theoretisch, wäre aber sehr unschön, da das Elternformular uralt ist, riesengroß und unübersichtlich, aber mit dieser Überprüfung so gar nix zu tun hat und mein Formular die Funktionen auch noch für andere Aktionen braucht. Ich hätte sonst alles doppelt, weil ja jetzt schon alles fertig ist. Ist halt eine Mini-Erweiterung für ein altes Projekt, für das ich nicht extra noch ne Zwischenklasse a la Model-View-Control anlegen wollte. Im Moment siehts natürlich so aus, als müsste ich das wohl doch, aber ich dachte, vielleicht gehts ja auch einfacher. Zitieren
Klotzkopp Geschrieben 23. Juni 2008 Geschrieben 23. Juni 2008 Ich sag doch, ich hab alles versucht..Offensichtlich hast du nicht alles versucht, denn was du vorhast, ist definitiv möglich -1 zurückgeben ist ja dasselbe wie mrCancel/mrOk etc.Nein. Wenn du in OnCreate -1 zurückgibt, kommt DoModal mit -1 zurück, ohne das Fenster überhaupt anzuzeigen. Gerade ausprobiert, funktioniert. Wenn es das bei dir nicht tut, machst du irgendwas falsch. Dann müsstest du mal den Code zeigen. Er wirft mir ja nicht einmal einen Fehler,Warum sollte "er" auch? und mit dem Debugger läuft er da brav drüber, tut aber nichts.Du meinst, der Debugger überspringt das return -1 und macht dahinter weiter? Dann debuggst du das falsche Programm. Zitieren
DeathKid Geschrieben 23. Juni 2008 Autor Geschrieben 23. Juni 2008 Nein, ich debugge nicht das falsche Programm -.- Ich arbeite an dem Projekt nun schon ca 1.5 Jahre und hab schon so manchen modalen Dialog geschrieben Vielleicht kann ich mich nicht richtig ausdrücken, aber richtig debuggen geht schon noch. Da ich jetzt keine Lust mehr hab, weiter rumzuprobieren, weil ich noch viel anderes zu tun habe, hab ichs ganz unschön gelöst: die Überprüfungsmethoden sind nun Public, und er ruft die schon im Elternformular auf. Nicht schön, aber selten Wenn ich zwischendurch doch noch mal Luft habe, probier ich noch ein wenig rum und sag dann auch Bescheid, woran es lag, sollte ich den Fehler finden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.