\section{\class{wxTimer}}\label{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 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} \wxheading{See also} \helpref{::wxStartTimer}{wxstarttimer}, \helpref{::wxGetElapsedTime}{wxgetelapsedtime}, \helpref{wxStopWatch}{wxstopwatch} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxTimer::wxTimer}\label{wxtimerctordef} \func{}{wxTimer}{\void} 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 it is running. \membersection{wxTimer::GetInterval}{wxtimergetinterval} \constfunc{int}{GetInterval}{\void} Returns the current interval for the timer (in milliseconds). \membersection{wxTimer::IsOneShot}\label{wxtimerisoneshot} \constfunc{bool}{IsOneShot}{\void} Returns TRUE if the timer is one shot, i.e. if it will stop after firing the first notification automatically. \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 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}\label{wxtimerstart} \func{bool}{Start}{\param{int}{ milliseconds = -1}, \param{bool}{ oneShot=FALSE}} (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 \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}\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} \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} \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}.