Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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:

Geschrieben
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 :)

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

Geschrieben
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 :)

Geschrieben
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.
Geschrieben
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:

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...