wxWidgets Problem beim Schließen von Fenstern



  • Hallo!

    Ich habe ein dringendes Problem. (Muss das heute abgeben ... man wartet ja nicht immer bis zum letzten Tag 🙄)

    Ich habe zwei Frames.
    Einer ist der KontrollFrame, der andere der AusgabeFrame.
    Nach einer Aktion (Button) im KontrollFrame wird der AusgabeFrame als „Child“ des KontrollFrames gestartet. Klickt man jetzt jedoch in der Ausgabe auf Schließen ( X ). So schließen sich beide Fenster – es sollte sich aber nur die Ausgabe schließen.

    Ich weiß nicht mehr weiter.... 😕

    Beide Klassen sind von wxFrame abgeleitet. In der main wird dabei der KontrollFrame als TopWindow gesetzt und ohne parent gestartet.

    In beiden Klassen gibt es einen EventTable – der auch jeweils die EVT_CLOSE definiert.

    KontrollFrame starten: (main.cpp)

    ControlFrame* control_Frame = new ControlFrame(NULL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(500,500) );
    SetTopWindow(control_Frame);
    control_Frame->Show();
    

    KontrollFrame:

    BEGIN_EVENT_TABLE(ControlFrame, wxFrame)
        EVT_CLOSE( ControlFrame::OnCloseWindow )
        EVT_MENU( wxID_EXIT, ControlFrame::OnQuit )
    END_EVENT_TABLE();
    
    void ControlFrame::OnCloseWindow(wxCloseEvent& event)
    {
        this->Destroy();
    }
    
    void ControlFrame::OnQuit(wxCommandEvent &event)
    {
        Close();
    }
    

    AusgabeFrame starten: (innerhalb des KontrollFrames)

    out = new OutputFrame(this,wxID_ANY, wxT("Ausgabe"));
    out->Show(true);
    

    AusgabeFrame:

    BEGIN_EVENT_TABLE(OutputFrame, wxFrame)
    	EVT_CLOSE( CWippeFrame::OnCloseWindow )
    	EVT_BUTTON( wxID_EXIT, 	CWippeFrame::OnQuit )
    END_EVENT_TABLE()
    
    void OutputFrame::OnCloseWindow(wxCloseEvent& event)
    {
    	this->Destroy();
    }
    
    void OutputFrame::OnQuit(wxCommandEvent &event)
    {
    	Close();
    }
    


  • Wie stehts mit folgendem ?

    Ich seh das Enum gleich zweimal ...

    EVT_MENU( wxID_EXIT, ControlFrame::OnQuit )
    

    folglich wird in jedem Frame die OnQuit-Funktion aufgerufen, oder ?


Anmelden zum Antworten