Anwendung aus dem Code heraus beenden
-
Hallo!
Ich stehe anscheind momentan auf der Leitung ...

Wie kann ich denn aus meinem eigenen Code heraus erreichen, dass z.B. aufgrund einer MessageBox-Abfrage meine Anwendung sich ordnungsgemäß (also mit Speicherfreigabe etc.) schliesst?
Vielen Dank schon mal für Eure Hilfe...
MArcus
-
Hallo,
siehe
http://www.c-plusplus.net/forum/viewtopic.php?t=64474
oder
http://www.c-plusplus.net/forum/viewtopic.php?t=75227
MfG
-
Hallo!
Vielen Dank für die Links zu den Beiträgen!
Habe es mal mit der Message "WM_CLOSE" probiert. Das funktioniert auch. Allerdings wird der Speicher nicht vollständig freigeben und es wird ein Fehler geworfen!
Wie kann bzw. muss ich den Speicher den ich explizit allokiert habe wieder freigeben?
Muss ich evt. eine Message-Behandlung im Mainframe durchführen o.ä.?
Vielen dank schonmal ....
-
also die vorgestellte Methode, die Anwendung zu schließen, ist sicher korrekt. Dann kann es sich nur um Fehler in deiner Anwendung handeln. Ich kann von hier aus natürlich nicht beurteilen, welche Datenstrukturen du verwendest, aber wenn du mit new Speicher besorgt hast, dann solltest du den freigeben (mit delete).
Aber da du schreibst, daß ein Fehler auftritt:
Welcher Fehler wird denn "geworfen"? Hast du memory leaks (werden im Ausgabefenster im Debug-Modus nach Beenden des Programms angezeigt)? Du solltest Speicher so früh wie möglich freigeben, das muß nicht unbedingt am Ende sein, dann hast du ein paar Probleme weniger. Ansonsten kannst du evtl. den Speicher direkt vor der Ausführung der "Schließ-Methode" wieder freigeben, du mußt nur dafür sorgen, daß du Zugriff hast.
MfG
-
Ich würde hier PostMessage vorschlagen, da der Code nach Sendmessage ja auch noch abgearbeitet wird und der möglicherweise auf schon geschlossene Resourcen zugreift.
-
Danke für Eure Hilfe!
Habe es mit SendMessage gelöst. Fehler kam ganz einfach dadurch, dass ich die zu früh die Message gesendet habe. Da war noch zu viel am laufen!
Mit PostMessage wäre das war scheinlich kein Problem gewesen!
thx...