// only send the notification once and then stop the timer
#define wxTIMER_ONE_SHOT true
-class WXDLLIMPEXP_BASE wxTimerImpl;
+class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
+class WXDLLIMPEXP_FWD_BASE wxTimerEvent;
+
+// timer event type
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_BASE, wxEVT_TIMER, wxTimerEvent)
// the interface of wxTimer class
class WXDLLIMPEXP_BASE wxTimer : public wxEvtHandler
// wxTimerRunner: starts the timer in its ctor, stops in the dtor
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxTimerRunner
+class WXDLLIMPEXP_BASE wxTimerRunner
{
public:
wxTimerRunner(wxTimer& timer) : m_timer(timer) { }
// wxTimerEvent
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxTimerEvent : public wxEvent
+class WXDLLIMPEXP_BASE wxTimerEvent : public wxEvent
{
public:
- wxTimerEvent(int timerid = 0, int interval = 0) : wxEvent(timerid)
- {
- m_eventType = wxEVT_TIMER;
+ wxTimerEvent()
+ : wxEvent(wxID_ANY, wxEVT_TIMER) { m_timer=NULL; }
- m_interval = interval;
+ wxTimerEvent(wxTimer& timer)
+ : wxEvent(timer.GetId(), wxEVT_TIMER),
+ m_timer(&timer)
+ {
+ SetEventObject(timer.GetOwner());
}
// accessors
- int GetInterval() const { return m_interval; }
+ int GetInterval() const { return m_timer->GetInterval(); }
+ wxTimer& GetTimer() const { return *m_timer; }
// implement the base class pure virtual
virtual wxEvent *Clone() const { return new wxTimerEvent(*this); }
private:
- int m_interval;
+ wxTimer* m_timer;
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxTimerEvent)
};
typedef void (wxEvtHandler::*wxTimerEventFunction)(wxTimerEvent&);
#define wxTimerEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxTimerEventFunction, &func)
+ wxEVENT_HANDLER_CAST(wxTimerEventFunction, func)
#define EVT_TIMER(timerid, func) \
wx__DECLARE_EVT1(wxEVT_TIMER, timerid, wxTimerEventHandler(func))