| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        timer.h
 
- // Purpose:     interface of wxTimer
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // generate notifications periodically until the timer is stopped (default)
 
- #define wxTIMER_CONTINUOUS false
 
- // only send the notification once and then stop the timer
 
- #define wxTIMER_ONE_SHOT true
 
- wxEventType wxEVT_TIMER;
 
- /**
 
-     @class wxTimer
 
-     The wxTimer class allows you to execute code at specified intervals.
 
-     Its precision is platform-dependent, but in general will not be better than
 
-     @c 1ms nor worse than @c 1s.
 
-     There are three different ways to use this class:
 
-     - You may derive a new class from wxTimer and override the
 
-       wxTimer::Notify member to perform the required action.
 
-     - You may redirect the notifications to any wxEvtHandler derived object by
 
-       using the non-default constructor or wxTimer::SetOwner.
 
-       Then use the @c EVT_TIMER macro to connect it to the event handler which
 
-       will receive wxTimerEvent notifications.
 
-     - You may use a derived class and the @c EVT_TIMER macro to connect it to
 
-       an event handler defined in the derived class. If the default constructor
 
-       is used, the timer object will be its own owner object, since it is
 
-       derived from wxEvtHandler.
 
-     In any case, you must start the timer with wxTimer::Start() after constructing
 
-     it before it actually starts sending notifications.
 
-     It can be stopped later with wxTimer::Stop().
 
-     @note A timer can only be used from the main thread.
 
-     @library{wxbase}
 
-     @category{misc}
 
-     @see wxStopWatch
 
- */
 
- class wxTimer : public wxEvtHandler
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         If you use it to construct the object and don't call SetOwner() later,
 
-         you must override Notify() method to process the notifications.
 
-     */
 
-     wxTimer();
 
-     /**
 
-         Creates a timer and associates it with @a owner.
 
-         Please see SetOwner() for the description of parameters.
 
-     */
 
-     wxTimer(wxEvtHandler* owner, int id = -1);
 
-     /**
 
-         Destructor. Stops the timer if it is running.
 
-     */
 
-     virtual ~wxTimer();
 
-     /**
 
-         Returns the ID of the events generated by this timer.
 
-     */
 
-     int GetId() const;
 
-     /**
 
-         Returns the current interval for the timer (in milliseconds).
 
-     */
 
-     int GetInterval() const;
 
-     /**
 
-         Returns the current @e owner of the timer.
 
-         If non-@NULL this is the event handler which will receive the
 
-         timer events (see wxTimerEvent) when the timer is running.
 
-     */
 
-     wxEvtHandler* GetOwner() const;
 
-     /**
 
-         Returns @true if the timer is one shot, i.e.\ if it will stop after firing
 
-         the first notification automatically.
 
-     */
 
-     bool IsOneShot() const;
 
-     /**
 
-         Returns @true if the timer is running, @false if it is stopped.
 
-     */
 
-     bool IsRunning() const;
 
-     /**
 
-         This member should be overridden by the user if the default constructor was
 
-         used and SetOwner() wasn't called.
 
-         Perform whatever action which is to be taken periodically here.
 
-         Notice that throwing exceptions from this method is currently not
 
-         supported, use event-based timer handling approach if an exception can
 
-         be thrown while handling timer notifications.
 
-     */
 
-     virtual void Notify();
 
-     /**
 
-         Associates the timer with the given @a owner object.
 
-         When the timer is running, the owner will receive timer events (see wxTimerEvent)
 
-         with @a id equal to @a id specified here.
 
-     */
 
-     void SetOwner(wxEvtHandler* owner, int id = -1);
 
-     /**
 
-         (Re)starts the timer. If @a milliseconds parameter is -1 (value by default),
 
-         the previous value is used. Returns @false if the timer could not be started,
 
-         @true otherwise (in MS Windows timers are a limited resource).
 
-         If @a oneShot is @false (the default), the Notify() function will be called
 
-         repeatedly until the timer is stopped.
 
-         If @true, it will be called only once and the timer will stop automatically.
 
-         To make your code more readable you may also use the following symbolic constants:
 
-         - wxTIMER_CONTINUOUS: Start a normal, continuously running, timer
 
-         - wxTIMER_ONE_SHOT: Start a one shot timer
 
-         Alternatively, use StartOnce().
 
-         If the timer was already running, it will be stopped by this method before
 
-         restarting it.
 
-     */
 
-     virtual bool Start(int milliseconds = -1, bool oneShot = wxTIMER_CONTINUOUS);
 
-     /**
 
-         Starts the timer for a once-only notification.
 
-         This is a simple wrapper for Start() with @c wxTIMER_ONE_SHOT parameter.
 
-         @since 2.9.5
 
-      */
 
-     bool StartOnce(int milliseconds = -1);
 
-     /**
 
-         Stops the timer.
 
-     */
 
-     virtual void Stop();
 
- };
 
- /**
 
-    @class wxTimerRunner
 
-    Starts the timer in its ctor, stops in the dtor.
 
- */ 
 
- class wxTimerRunner
 
- {
 
- public:
 
-     wxTimerRunner(wxTimer& timer);
 
-     wxTimerRunner(wxTimer& timer, int milli, bool oneShot = false);
 
-     void Start(int milli, bool oneShot = false);
 
-     ~wxTimerRunner();
 
- };
 
- /**
 
-     @class wxTimerEvent
 
-     wxTimerEvent object is passed to the event handler of timer events
 
-     (see wxTimer::SetOwner).
 
-     For example:
 
-     @code
 
-     class MyFrame : public wxFrame
 
-     {
 
-     public:
 
-         ...
 
-         void OnTimer(wxTimerEvent& event);
 
-     private:
 
-         wxTimer m_timer;
 
-         wxDECLARE_EVENT_TABLE();
 
-     };
 
-     wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
 
-         EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
 
-     wxEND_EVENT_TABLE()
 
-     MyFrame::MyFrame()
 
-            : m_timer(this, TIMER_ID)
 
-     {
 
-         m_timer.Start(1000);    // 1 second interval
 
-     }
 
-     void MyFrame::OnTimer(wxTimerEvent& event)
 
-     {
 
-         // do whatever you want to do every second here
 
-     }
 
-     @endcode
 
-     @library{wxbase}
 
-     @category{events}
 
-     @see wxTimer
 
- */
 
- class wxTimerEvent : public wxEvent
 
- {
 
- public:
 
-     wxTimerEvent();
 
-     wxTimerEvent(wxTimer& timer);
 
-     /**
 
-         Returns the interval of the timer which generated this event.
 
-     */
 
-     int GetInterval() const;
 
-     /**
 
-         Returns the timer object which generated this event.
 
-     */
 
-     wxTimer& GetTimer() const;
 
- };
 
 
  |