vcmfc定时器

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:32:31
我现在在做一个程序,里面有一个记时钟(是以秒为单位变化的),和一个移动图像(此图像具有变速功能)。所以有两个settimer,但是做出来的效果是记时钟的变化速度与图像变化速度相同,请高手解决一下,有急用
那两个定时器是同时启动的
怎么在一定时间后停止程序并弹出对话框
怎么避免两个定时器被其他消息同时刷新,否则一刷新连计时器也归零了

用settimer(1,毫秒数1,NULL);和settimer(2,毫秒数2,NULL);设置2个定时器,设置不同的毫秒数.
添加WM_TIMER事件处理函数
void CTsDBDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1){
//一号定时器处理代码;
}else if(nIDEvent==2){
//二号定时器处理代码;
}

CDialog::OnTimer(nIDEvent);
}

看看对你有没有帮助

我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。编译器和操作系统为我们提供了很多时间函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的时间函数。现在我就介绍windows下的几种常用时间函数。1:Sleep函数使用:sleep(1000),在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。原理:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。Sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。精度:sleep函数的精度非常低,当系统越忙它精度也就越低,有时候我们休眠1秒,可能3秒后才能继续执行。它的精度取决于线程自身优先级、其他线程的优先级,以及线程的数量等因素。2:MFC下的timer事件 使用:1.调用函数SetTimer()设置定时间隔,如SetTimer(0,100,NULL)即为设置100毫秒的时间间隔;2.在应用程序中增加定时响应函数OnTimer