lumpie Geschrieben 27. August 2005 Geschrieben 27. August 2005 Hallo, ich habe mal wieder ein kleines Problem mit der "grafischen" Oberfläche. (ich komme normalerweise aus der unix c-programmierung :hells: ) Naja egal... Auf jedenfall folgendes problem: Ich habe mir eine grafische Oberfläche mit Hilfe des Visual Studios 6.0 zusammengeklickt, das funktioniert auch alles wunderbar - die buttons und stati fenster funktionieren. Die Bilder werden korrekt dargestellt, etc... Mein Problem ist nun: Das Programm hat einen zyklischen Rythmus wenn es über eine Option gestartet wird. D.h. es tut alle X Minuten etwas. Wenn ich allerdings während dieses Zyklus das Fenster schliesse (mit dem x oben rechts) dann läuft der Prozess weiter und nur die grafische Oberfläche ist verschwunden. Ich möchte aber auch wenn der Anwender auf das X klickt einen Parameter setzten bzw. eine Methode aufrufen die den Zyklus unterbricht. Wie stelle ich das an? Denn ein Doppelklick auf das X (wie bei den normalen Buttons) geht nicht, somit kann ich keinen Code hinterlegen. Ich habe schonmal in der Klasse für meinen Dialog gesucht, dort gibt es einige Methoden die dafür gebaut sein könnten, wie z.B.: OnCancel oder onCancelMode oder OnClose... Aber bevor ich da jetzt jede Methode probiere, frage ich einfach mal euch Ihr wisst das bestimmt.. Also welche Methode wird angezogen? oder wie kann ich meinen Code hinterlegen :byby: Zitieren
Leo74 Geschrieben 27. August 2005 Geschrieben 27. August 2005 Hallo, die mußt die Nachricht WM_CLOSE abfangen, die in der Methode OnClose behandelt wird. Zitieren
lumpie Geschrieben 28. August 2005 Autor Geschrieben 28. August 2005 Hallo, die mußt die Nachricht WM_CLOSE abfangen, die in der Methode OnClose behandelt wird. Hallo, reicht es nicht einfach wenn ich meinen Code in Methode OnClose schreibe? Danke Zitieren
Leo74 Geschrieben 28. August 2005 Geschrieben 28. August 2005 Hallo, reicht es nicht einfach wenn ich meinen Code in Methode OnClose schreibe? Danke Klar, das ist damit gemeint Zitieren
lumpie Geschrieben 28. August 2005 Autor Geschrieben 28. August 2005 Klar, das ist damit gemeint Alles klar :beagolisc dachte nur weil du geschrieben hast die mußt die Nachricht WM_CLOSE abfangen Zitieren
lumpie Geschrieben 28. August 2005 Autor Geschrieben 28. August 2005 Klar, das ist damit gemeint so hab das jetzt mal probiert aber wenn ich auf das X klick springt er nicht in meine funktion: void MyAppDlg::OnClose() { class_myfunc->closeconnection(); class_myfunc->writelog("Closing application..."); } Er macht leider nichts davon.. Und wenn ich die Funktion OnClose nicht in der Headerdatei definiere sagt der Compiler: error C2509: 'OnClose' : Member-Funktion nicht in 'MyAppDlg' deklariert Aber mit MyAppDlg:: zeigt er mir die Methode im DropDown Feld an.. Deklariere ich die Methode in der Headerdatei .. kann ich compilieren jedoch springt er bei klick auf das x nicht in die methode... Die Klasse MyAppDlg ist von CDialog abgeleitet. :confused: :confused: Zitieren
Klotzkopp Geschrieben 28. August 2005 Geschrieben 28. August 2005 Hast du die Methode "von Hand" angelegt, d.h. nicht über den Assistenten? Dann hast du vermutlich den MessageMap-Eintrag vergessen. Ohne den läuft nichts. Zitieren
lumpie Geschrieben 28. August 2005 Autor Geschrieben 28. August 2005 Hast du die Methode "von Hand" angelegt, d.h. nicht über den Assistenten? Dann hast du vermutlich den MessageMap-Eintrag vergessen. Ohne den läuft nichts. Ja ich habe es per Hand gemacht, so wie ich es gewohnt bin Wie gesagt kenne mich mit dem Visual Studio 6.0 nicht so aus - habe sonst immer c im unix umfeld programmiert wie geht das mit dem assistent? oder wo muss der messagemap eintrag hin Zitieren
Klotzkopp Geschrieben 28. August 2005 Geschrieben 28. August 2005 wie geht das mit dem assistent? oder wo muss der messagemap eintrag hin Wenn du dich mit der Funktionsweise der MFC nicht gut auskennst, solltest du Nachrichtenbehandlungsfunktion nicht von Hand, sondern immer mit dem Klassenassistenten anlegen. Auf dem zweiten Reiter findest du dort die Fenster und Steuerelement und die Nachrichten. Wähle dort deine Dialogklasse und WM_CLOSE aus und füge die Funktion hinzu. Zitieren
lumpie Geschrieben 28. August 2005 Autor Geschrieben 28. August 2005 Wenn du dich mit der Funktionsweise der MFC nicht gut auskennst, solltest du Nachrichtenbehandlungsfunktion nicht von Hand, sondern immer mit dem Klassenassistenten anlegen. Auf dem zweiten Reiter findest du dort die Fenster und Steuerelement und die Nachrichten. Wähle dort deine Dialogklasse und WM_CLOSE aus und füge die Funktion hinzu. Hallo, super hat funktioniert... Hätte es auch fast per Hand richtig gemacht Danke :byby: 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.