wxTimer功能的使用记录
一、wxTimer说明
wxTimer类让你的程序可以周期性的收到提示,或者在某个特定的时间间隔收到提醒。如果你要使用线程处理的事情可以分为小的时间片,每隔几个毫秒处理一次,以便你的应用程序可以有足够的时间响应用户的输入,你就可以使用wxTimer来代替多线程。
你可以自己选择提醒的通知方式,如果你更喜欢使用虚函数,就实现一个wxTimer的派生类,然后重载其Notify函数,如果你更倾向使用事件机制,就给你的wxTimer构造函数指定一个wxEvtHandler指针(或者使用SetOwner)函数,然后使用EVT-TIMER(id,func)事件映射宏来将事件映射到对应的处理函数。
你可以给wxTimer的构造函数或者SetOwner函数传递一个可选的定时器标识符,这个标识符可以用在EVT-TIMER事件映射宏中。这在你需要使用多个定时器的时候比较有用。
使用Start函数启动定时器,需要传递的参数包括一个毫秒为单位的定时器时长和可选的wxTIMER_ONE_SHOT指示(如果你只希望收到一次提示)。Stop函数用来终止某个定时器,IsRunning函数用来检测当前定时器是否出于运行状态。
wxTimer说明抄自《使用wxWidgets进行跨平台程序开发》
二、Code::Blocks使用wxTimer的说明
(1)新建工程
- 在C::B上面新建一个wxWidgets工程。

- 建好之后编译运行一下,确保工程demo是可以正常运行的。

(2)使用wxSmith功能创建控件
-
创建wxTimer控件

-
创建一个文本框控件,便于查看打印输出

(3)简单功能实现
- 在
XXXXXMain.h文件里面声明事件函数。

- 在
XXXXXMain.cpp文件中实现功能,这边的功能就简单的设置为在文本框中打印数字。
void test_TimerFrame::OnTimer(wxTimerEvent &event)
{
TextCtrl1->AppendText(wxT("234\n"));
}

- 在frame的构造函数里进行定时器事件函数绑定,以及开启定时器,功能是每隔1000毫秒在文本框打印一次。
Connect(ID_TIMER1, wxEVT_TIMER, (wxObjectEventFunction)&test_TimerFrame::OnTimer); // 绑定事件函数
Timer1.Start(1000); // 定时器时间间隔

- 效果

- 停止
需要停止定时器的话,可以使用Timer1.Stop()即可实现。

浙公网安备 33010602011771号