[gelöst][wxWidgets] wxTimer verwenden



  • Hi Leute,
    ich versuche zur Zeit mit einem wxTimer ein Lable auf meinem Hauptfenster zu aktualisieren. Dazu habe ich mir einen eigenen Timer von wxTimer abgeleitet, der im Konstruktor den Zeiger auf einen EventHandler übergeben bekommt.
    Notify habe ich so definiert:

    void MyTimer::Notify()
    {
    
        wxTimerEvent event(wxEVT_TIMER, 9999);
        //m_parentframe enhält den Zeiger auf den EventHandler
        m_parentframe->AddPendingEvent(event);
    }
    

    Kann ich dieses Event über Connect mit einer Funktion meines von wxFrame abgeleiteten Hauptfensters verbinden? Oder ist das Schwachsinn?
    Wie würde der Connect aufruf im Konstruktor meines Hauptfensters aussehen?

    Und wenn das nicht funktioniert, wie ist das

    ...redirect the notifications to any wxEvtHandler...

    aus der Dokumentation zu verstehen?(http://docs.wxwidgets.org/trunk/classwx_timer.html)
    Danke schonmal für jede Hilfe 😉



  • ok habe selbst eine Lösung gefunden:

    #define ID_TIMER //irgendeine passende ID
    
    class myFrame : public wxFrame
    {
    public:
        myFrame();
        ~myFrame();
    
        OnTimer();
    
    private:
    
        wxTimer * m_Timer;
    }
    
    ////////////////////////////////////
    
    myFrame::myFrame()
        :wxFrame(...), m_Timer(new wxTimer(this, ID_TIMER))
    {
          //...
    
         this->Connect(TIMER_ID, wxEVT_TIMER, wxTimerEventHandler(ctkFrame::OnTimer), NULL, this);
    }
    
    myFrame::~myFrame()
    {
        //...
    
        this->Disconnect(TIMER_ID, wxEVT_TIMER, wxTimerEventHandler(ctkFrame::OnTimer), NULL, this);
    }
    
    myFrame::OnTimer(wxTimerEvent& event)
    {
        //...
    }
    

Log in to reply