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:
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.
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
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
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
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:
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.
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
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.
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:
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden