SetTimer随外部情况更改定时时间间隔来响应OnTimer的问题

今天写一个程序,有如下需求:
一个外部条件,需要定时去查看一下,根据这个外部条件的不同状况,定时的时间间隔是不一样的;那么,使用SetTimer怎么来改变定时的时间间隔呢?
我们知道,SetTimer(1,1000,NULL);这个语句执行后,系统就每隔1秒执行1次ontimer,这个时间间隔是不变的;并且SetTimer函数执行完后,就不会再循环回来再次执行SetTimer,是单向的,不是循环的,执行完了,就过去了,就结束了,只是系统会自动根据SetTimer函数定的时间来定期自动执行OnTimer,所以也没办法将时间间隔设置成变量来根据情况改变,因为不会循环回来再次设置定时器。。
解决办法:
OnTimer这个函数会被系统按一定的时间间隔调用,那么可以在OnTimer函数中,根据不同条件去重新设置定时器,就能实现不同的条件按照不同的时间间隔来调用OnTimer函数进行查看外部条件。
如:
先在一个函数中调用:
SetTimer(1,2000,NULL);//先启动定时器


//查询外部条件,并根据外部条件的不同状况设置不同的时间间隔
OnTimer(UINT_PTR nIDEvent)
{
********;
********;
switch(m_condition)
case A:
*****;
*****;
SetTimer(1,5000,Null);
break;
case B:
****;
****;
SetTimer(1,10000,NULL);
break;
case C:
****;
****;
SetTimer(1,20000,NULL);
break;
default:
*****;
*****;
break;
}
当查询到时A时,则间隔5秒后执行Ontimer进行查询,若这一次查到时B,则间隔10秒后执行OnTimer进行查询,……,这样就实现了根据不同的情况随时改变定时器的时间间隔。
当然,SetTimer里的时间可以用变量,因为OnTimer是会不停执行调用的。

你可能感兴趣的:(MFC编程)