Zum Inhalt springen

Modales Formular lässt sich nicht automatisch schließen


DeathKid

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Von einem normalen C++-Formular aus
Es 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?
Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...