flyfish 2015-1-19
SetTimer
使用timeSetEvent
头文件支持
#include
#pragma comment(lib, "winmm.lib")
static void CALLBACK Function(UINT wTimerID,UINT nMsg,DWORD dwUser,DWORD dw1,DWORD dw2);
void ClassName::Function(UINT wTimerID,UINT nMsg,DWORD dwUser,DWORD dw1,DWORD dw2)
{
ClassName* pDlg=(ClassName*)dwUser;
}
int nTimeID=timeSetEvent(100,100,Function,(DWORD)this,TIME_PERIODIC);
释放定时器资源
timeKillEvent(nTimeID);
MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD_PTR dwUser,
UINT fuEvent
);
头文件支持
#include
#include
#include
类中的函数声明
void BoostOnTimer(const boost::system::error_code& /*e*/,
boost::asio::deadline_timer* t,UINT nElapse);
void BoostSetTimer(UINT nElapse );
类中的函数实现
void ClassName::BoostOnTimer(const boost::system::error_code& /*e*/,
boost::asio::deadline_timer* t,UINT nElapse)
{
//任务执行
//终止条件
t->expires_at(t->expires_at() + boost::posix_time::milliseconds(nElapse));
t->async_wait(boost::bind(&ClassName::BoostOnTimer,this,boost::asio::placeholders::error, t,nElapse));
}
void ClassName::BoostSetTimer(UINT nElapse )//毫秒
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::milliseconds(nElapse));
t.async_wait(boost::bind(&ClassName::BoostOnTimer,this,boost::asio::placeholders::error, &t, nElapse));
io.run();
}
调用方式 BoostSetTimer(3000);