\section{\class{wxTimer}}\label{wxtimer}
-The wxTimer object is an abstraction of MS Windows and X toolkit timers. To
-use it, derive a new class and override the {\bf Notify} member to
-perform the required action. Start with {\bf Start}, stop with {\bf
-Stop}, it's as simple as that.
+The wxTimer class allows you to execute code at specified intervals. Its
+precision is platform-dependent, but in general will not be better than 1ms nor
+worse than 1s.
+
+There are two different ways to use this class:
+
+\begin{enumerate}
+\item You may derive a new class from wxTimer and override the
+\helpref{Notify}{wxtimernotify} member to perform the required action.
+\item Or you may redirect the notifications to any
+\helpref{wxEvtHandler}{wxevthandler} derived object by using the non default
+constructor or \helpref{SetOwner}{wxtimersetowner}. Then use {\tt EVT\_TIMER}
+macro to connect it to the event handler which will receive
+\helpref{wxTimerEvent}{wxtimerevent} notifications.
+\end{enumerate}
+
+In any case, you must start the timer with \helpref{Start}{wxtimerstart}
+after constructing it before it actually starts sending notifications. It can
+be stopped later with \helpref{Stop}{wxtimerstop}.
\wxheading{Derived from}
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/timer.h>
+
\wxheading{See also}
-\helpref{::wxStartTimer}{wxstarttimer}, \helpref{::wxGetElapsedTime}{wxgetelapsedtime}
+\helpref{::wxStartTimer}{wxstarttimer}, \helpref{::wxGetElapsedTime}{wxgetelapsedtime}, \helpref{wxStopWatch}{wxstopwatch}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxTimer::wxTimer}
+\membersection{wxTimer::wxTimer}\label{wxtimerctordef}
\func{}{wxTimer}{\void}
-Constructor.
+Default constructor. If you use it to construct the object and don't call
+\helpref{SetOwner}{wxtimersetowner} later, you must override
+\helpref{Notify}{wxtimernotify} method to process the notifications.
+
+\membersection{wxTimer::wxTimer}\label{wxtimerwxtimer}
+
+\func{}{wxTimer}{\param{wxEvtHandler *}{owner}, \param{int }{id = -1}}
+
+Creates a timer and associates it with {\it owner}. Please see
+\helpref{SetOwner}{wxtimersetowner} for the description of parameters.
\membersection{wxTimer::\destruct{wxTimer}}
\func{}{\destruct{wxTimer}}{\void}
-Destructor. Stops the timer if activated.
+Destructor. Stops the timer if it is running.
+
+\membersection{wxTimer::GetInterval}{wxtimergetinterval}
+
+\constfunc{int}{GetInterval}{\void}
+
+Returns the current interval for the timer (in milliseconds).
-\membersection{wxTimer::Interval}
+\membersection{wxTimer::IsOneShot}\label{wxtimerisoneshot}
-\func{int}{Interval}{\void}
+\constfunc{bool}{IsOneShot}{\void}
-Returns the current interval for the timer.
+Returns TRUE if the timer is one shot, i.e. if it will stop after firing the
+first notification automatically.
-\membersection{wxTimer::Notify}
+\membersection{wxTimer::IsRunning}\label{wxtimerisrunning}
+
+\constfunc{bool}{IsRunning}{\void}
+
+Returns TRUE if the timer is running, FALSE if it is stopped.
+
+\membersection{wxTimer::Notify}\label{wxtimernotify}
\func{void}{Notify}{\void}
-This member should be overridden by the user. It is called on timeout.
+This member should be overridden by the user if the default constructor was
+used and \helpref{SetOwner}{wxtimersetowner} wasn't called.
+
+Perform whatever action which is to be taken periodically here.
+
+\membersection{wxTimer::SetOwner}\label{wxtimersetowner}
+
+\func{void}{SetOwner}{\param{wxEvtHandler *}{owner}, \param{int }{id = -1}}
+
+Associates the timer with the given {\it owner} object. When the timer is
+running, the owner will receive \helpref{timer events}{wxtimerevent} with
+id equal to {\it id} specified here.
-\membersection{wxTimer::Start}
+\membersection{wxTimer::Start}\label{wxtimerstart}
\func{bool}{Start}{\param{int}{ milliseconds = -1}, \param{bool}{ oneShot=FALSE}}
-(Re)starts the timer. If {\it milliseconds}\/ is absent or -1, the
-previous value is used. Returns FALSE if the timer could not be started,
+(Re)starts the timer. If {\it 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 {\it oneShot} is FALSE (the default), the Notify function will be repeatedly
-called. If TRUE, Notify will be called only once.
+If {\it oneShot} is FALSE (the default), the \helpref{Notify}{wxtimernotify}
+function will be called repeatedly until the timer is stopped. If TRUE,
+it will be called only once and the timer will stop automatically.
-\membersection{wxTimer::Stop}
+\membersection{wxTimer::Stop}\label{wxtimerstop}
\func{void}{Stop}{\void}
Stops the timer.
+\section{\class{wxTimerEvent}}\label{wxtimerevent}
+
+wxTimerEvent object is passed to the event handler of timer events.
+
+For example:
+
+\begin{verbatim}
+class MyFrame : public wxFrame
+{
+public:
+ ...
+ void OnTimer(wxTimerEvent& event);
+
+private:
+ wxTimer m_timer;
+};
+
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
+END_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
+}
+
+\end{verbatim}
+
+\wxheading{Include files}
+
+<wx/timer.h>
+
+\wxheading{See also}
+
+\helpref{wxTimer}{wxtimer}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxTimerEvent::GetInterval}\label{wxtimereventgetinterval}
+
+\constfunc{int}{GetInterval}{\void}
+
+Returns the interval of the timer which generated this event.
+
+\section{\class{wxStopWatch}}\label{wxstopwatch}
+
+The wxStopWatch class allow you to measure time intervalls.
+
+\wxheading{Include files}
+
+<wx/timer.h>
+
+\wxheading{See also}
+
+\helpref{::wxStartTimer}{wxstarttimer}, \helpref{::wxGetElapsedTime}{wxgetelapsedtime}, \helpref{wxTimer}{wxtimer}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxStopWatch::wxStopWatch}
+
+\func{}{wxStopWatch}{\void}
+
+Constructor. This starts the stop watch.
+
+\membersection{wxStopWatch::Pause}\label{wxstopwatchpause}
+
+\func{void}{Pause}{\void}
+
+Pauses the stop watch. Call \helpref{wxStopWatch::Resume}{wxstopwatchresume} to resume
+time measuring again.
+
+\membersection{wxStopWatch::Start}
+
+\func{void}{Start}{\param{long}{ milliseconds = 0}}
+
+(Re)starts the stop watch with a given initial value.
+
+\membersection{wxStopWatch::Resume}\label{wxstopwatchresume}
+
+\func{void}{Resume}{\void}
+
+Resumes the stop watch after having been paused with \helpref{wxStopWatch::Pause}{wxstopwatchpause}.
+
+\membersection{wxStopWatch::Time}
+
+\func{long}{Time}{\void}\label{wxstopwatchtime}
+
+Returns the time in milliseconds since the start (or restart) or the last call of
+\helpref{wxStopWatch::Pause}{wxstopwatchpause}.