wxWidgets Methode beim Schließen [X] eines Fenster ausführen
-
HI,
in meinem wxWidgets Projekt habe ich ein Unterfenster(nicht das Hauptfenster) in dem eine Aktion gestartet wird, an der mehrere Threads beteiligt sind. Unter anderem verwende ich CriticalSections. Wenn ich nun, während die Threads laufen, das Unterfenster über das X in der rechten oberen Ecke beende, gibt es einen Programmabsturtz an der CriticalSection.
Kann ich, um dies zu vermeiden, eine Methode schreiben, die beim Klick auf das X aufgerufen wird? Diese beendet die Threads ordnungsgemäß.
OnExit() kann ich ja nur für das Programmende überschreiben.
Mfg
-
Du kannst das CloseEvent abfangen.
BEGIN_EVENT_TABLE( MyDialog, wxDialog ) EVT_CLOSE( MyDialog::OnCloseWindow ) ... END_EVENT_TABLE() void MyDialog::OnCloseWindow( wxCloseEvent& event ) { ... }
-
Oder für die Makro-Hasser unter uns:
// Im Konstruktor deines Frames Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(MyFrame::OnCloseWindow));
-
Danke! Es hat geholfen.
Nur leider wird jetzt auch die OnCloseWindow() aufgerufen, wenn ich an einer Stelle Close() vom Window aufrufe. Die eigene Methode sollte eigentlich nur beim Klick auf das X aufgerufen werden.-> Man muss nun Destroy() an der Stelle von Close() nehmen.Wenn man dann in der OnCloseWindow() this->Close() aufruft, dann gibt eine herrliche Endlosschleife
Mfg