使用计时器
通过计时器对象,可以在一段时间后或每隔一定时间执行指定的操作。
计时器类 | 函数 |
WSDtimer | WSGIappTimer() |
在一段时间后执行指定的操作
如果想在一段时间后执行指定的操作,首先,准备好通过计时器启动的计时器处理函数。
然后,在计时器对象中登录计时器处理函数。
计时器登录成员函数 | 功能 |
addTriggerProc() | 登录计时器处理函数 |
delTriggerProc() | 删除计时器处理函数 |
#include
//计时器启动处理函数的例子
void triggerHandler(unsigned char clock,void* data){
//clock:以250ms 为单位增加的计时器设置
//data:计时器登录时传递的数据
//用户指定的处理...
}
void event_procedure(WSCbase* obj){
//下面指定的数据,将被传递给计时器处理函数。
void* data = (void*)1234;
//在计时器中登录一段时间后执行的处理函数 //1000ms后启动
long id = WSGIappTimer()->addTriggerProc( triggerHandler,WS1000MS,data );
//中途停止计时器
WSGIappTimer()->delTriggerProc( id );
}
triggerHandler() 函数中记载了当被计时器启动时所需要执行的处理。
通过addTriggerProc()函数的第三个参数void*向triggerHahdler()函数
传递数据。addTriggerProc()返回计时器处理函数的ID。如果需要终止
计时器处理函数,在delTriggerProc()中指定相应的ID。
与事件处理不同是,计时器处理函数不会调用更新对象处理。如果变更了
对象属性值等,通过调用update()函数更新对象绘图。
//计时器启动处理函数的例子
void timerHandler(unsigned char clock,void* data){
WSCbase* object = (WSCbase*)data;
object->setProperty(WSNlabelString,"时间");
object->update(); //更新对象绘图
}
每隔一段时间后执行指定的操作
如果想在每隔一段时间后执行指定的操作,首先,准备好通过计时器启动的计时器处理函数。
然后,在计时器对象中登录计时器处理函数。
计时器登录成员函数 | 功能 |
addTimerProc() | 登录计时器处理函数 |
delTimerProc() | 删除计时器处理函数 |
#include
//计时器启动处理函数的例子
void timerHandler(unsigned char clock,void* data){
//clock: 以250ms 为单位增加的计时器设置
//data:计时器登录时传递的数据
//用户指定的处理...
}
void event_procedure(WSCbase* obj){
//下面指定的数据,将被传递给计时器处理函数。
void* data = (void*)1234;
//在计时器中登录每隔一段时间后执行的处理函数 //每500ms启动
long id = WSGIappTimer()->addTimerProc( timerHandler,WS500MS,data );
//中途停止计时器
WSGIappTimer()->delTimerProc( id );
}
timerHandler() 函数中记载了当被计时器启动时所需要执行的处理。
通过addTimerProc() 函数的第三个参数void*向timerHandler()函数
传递数据。addTimerProc() 函数返回计时器处理函数的ID。如果需要终止
计时器处理函数,在delTimerProc()中指定相应的ID。
与事件处理不同是,计时器处理函数不会调用更新对象处理。如果变更了
对象属性值等,通过调用update()函数更新对象绘图。
指定的时间间隔(WS250MS,WS500MS,WS750MS等)以250ms为单位增加。
//计时器启动处理函数的例子
void timerHandler(unsigned char clock,void* data){
WSCbase* object = (WSCbase*)data;
object->setProperty(WSNlabelString,"时间");
object->update(); //更新对象绘图
}