wxWidgets, Handling eigener Events



  • Hallo zusammen,
    ich krieg das Handling von eigenen Events nicht gebacken. Nachdem ich in diversen Tutorials recherchiert habe, habe ich zwar so ein paar Zeilen Code hinbekommen, aber funktionieren tut es leider nicht.
    Ich habe eine Klasse (CLogger) die zwei Events an die Klasse iParasPanel (abgeleitet von wxPanel) schicken soll.
    Deklariert sind die Events wie folgt:

    BEGIN_DECLARE_EVENT_TYPES()
    	DECLARE_EVENT_TYPE(wxLOGGING_FINISHED,-1)
    	DECLARE_EVENT_TYPE(wxNEW_DATA_RECEIVED,-1)
    END_DECLARE_EVENT_TYPES()
    

    und

    DEFINE_EVENT_TYPE(wxLOGGING_FINISHED)
    DEFINE_EVENT_TYPE(wxNEW_DATA_RECEIVED)
    

    iParasPanel.h

    [cpp]class iParasPanel : public wxPanel
    {
        .....
    
        void OnDataReceived(wxUpdateUIEvent& event);
        void OnLoggingFinished(wxUpdateUIEvent& event);
        DECLARE_EVENT_TABLE();
    }
    

    iParasPanel.cpp

    BEGIN_EVENT_TABLE(iParasPanel, MainPanel)
    	EVT_UPDATE_UI(wxLOGGING_FINISHED, iParasPanel::OnLoggingFinished)
    	EVT_UPDATE_UI(wxNEW_DATA_RECEIVED, iParasPanel::OnReceivedData)
    END_EVENT_TABLE()
    
    void iParasPanel::OnLoggingFinished(wxUpdateUIEvent& event)
    {
    ..........
    }
    
    void iParasPanel::OnDataReceived(wxUpdateUIEvent& event)
    {
    ..........
    }
    

    Der Aufruf sieht dann so aus:
    Auszug aus dem Code von CLogger::Func1()

    {
    	wxUpdateUIEvent event1(wxNEW_DATA_RECEIVED);
    	wxUpdateUIEvent event2(wxLOGGING_FINISHED);
    
    	event1.SetEventObject(this);
    	event2.SetEventObject(this);
    // event.SetText()
    //	wxWindow::GetEventHandler()->ProcessEvent(event1);
    	ProcessEvent(event1);
    	ProcessEvent(event2);
    }
    

    Die Aufrufe von ProcessEvent werden ausgeführt, aber die Breakpoints die ich in den beiden iParasPanel-Funktionen gesetzt habe nicht angesprungen, die beiden Funktionen werden nicht angesprungen.
    Ich vermute es liegt an der Zeile

    //	wxWindow::GetEventHandler()->ProcessEvent(event1);
    

    Aber GetEventHandler() kennt er nicht, und wxWindow::GetEventHandler geht auch nicht, da meine Klasse CLogger nichts mit wxWindow zu tun hat ...
    Was habe ich falsch gemacht ?


Anmelden zum Antworten