2 qq 20572677 qq_20572677 于 2016.09.22 22:38 提问

MFC OnTimer定时器修改时间间隔的问题 3C

MFC对话框程序,用settimer(1,1000,NULL)创建定时器之后,如果想在程序其他位置修改定时器时间间隔,能不能用代码手动修改?还是一旦创建了定时器,就必须按照settimer中给定的时间间隔执行,无法修改?

5个回答

qq_31592883
qq_31592883   2016.09.23 01:19

SetTimer can reuse timer IDs in the case where hWnd is NULL.
这是msdn上的解释。
你可以试试,应该可以在任何地方都可以修改 timer ID= 相同的好的参数的。

caozhy
caozhy   Ds   Rxr 2016.09.22 23:54

其实你可以让timer使用你需要间隔的最大公约数。比如你的间隔可以是1秒,2秒,0.5秒,那么你的间隔可设置为0.5秒。
外加一个全局变量作为计数器
比如
private: int cnt = 0;
如果要2秒,而你的间隔是600毫秒,在ontimer写
cnt++;
if (cnt % 4 == 0) { 你的定时的代码 }

caozhy
caozhy 600毫秒->500毫秒
接近 2 年之前 回复
wind612
wind612   2016.09.23 10:11

要修改时间间隔,再执行一次settimer 函数就好了。

qq_20572677
qq_20572677   2016.09.23 16:31

有没有像C#中直接改timer1.interval这种的用某行代码直接修改???

lx624909677
lx624909677   Ds   Rxr 2016.10.18 15:30

时间间隔创建了不能修改吧,想修改就自己去写个线程

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VC/MFC 定时器设置及OnTimer使用
OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现: SetTimer, KillTimer()和OnTimer(). 粗略的说,Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 或者说Settimer是设置定时器的,Ontimer是响应Settimer消
MFC中定时器OnTimer函数的使用
在MFC中经常我们需要对界面进行刷新更新数据或者状态,这就需要用到定时器,其实现函数为OnTimer,下面对其用法步骤(基于VS2010)进行简要说明:
VS2005 添加onTimer定时器
SetTimer(1,300,NULL);void CchangeDisplayDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnTimer(nIDEvent); }
MFC OnTimer Invalidate(true) 内存泄漏
检查所有new / delete匹配的情况下,查找所有GetDC()后是否进行DeleteDC;
MFC中OnTimer函数
关于OnTimer()       OnTimer()函数是响应用SetTimer()函数设定的时钟发送的时钟消息的,你没设定时钟,就不会有时钟消息,OnTimer()里的语句当然也不会被调用。    为类添加VM_TIMER消息响应,会看到类中多了个OnTimer(UINT nIDEvent)。     然后用SetTimer(1,10,NULL)就行了。第一个参数是ID,第二个是间隔
MFC中OnTimer不被执行的解决办法
    被这个问题困扰了一天,百度以及向大神请教都没有结果,经过自己不断尝试和琢磨,终于找到原因并解决了问题,特写下来供大家参考。问题描述:     在MFC中,使用setTimer来触发OnTimer,但是运行程序并打断点之后发现,OnTimer并没有被执行。确认计时器的使用方法没有问题,OnTimer函数也是通过重载实现的。原因:     我之前在给对话框添加背景的时候,注释掉了OnPaint...
MFC中的SetTimer、ON_WM_TIMER 和OnTimer的关系和使用
原文链接:http://hi.baidu.com/sgglong70626/item/069220f017c9aac7a835a21f 定时器在VC中的使用频繁,以下讨论定时器的使用方法。 定时器的原型是: //windows API 函数 WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT
MFC中OnTimer定时器用法
一、     单个定时器用法 定时器工作主要流程:设置定时器SetTimer,时间到后调用OnTimer函数,关闭定时器KillTimer。可以在程序初始化用SetTimer函数弄成多个线程类似,并行进行多个函数功能。 1.1 SetTimer(H,nID,elipse,NULL) 函数作用:开始nID号定时器 H:要定时的事件句柄,在MFC中不需要该参数,因为MFC封装在CWnd类中
MFC定时器——OnTimer和SetTimer的用法
1、定义定时器ID#define IDTIMER1 12、Override OnTimer方法:void CHouseRobotDlg::OnTimer(UINT nIDEvent) { switch(nIDEvent) { case IDTIM
定时器 settimer ontimer killtimer
文章出处:http://blog.sina.com.cn/s/blog_86f7b9c70101eob1.html定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务。在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作。例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一