SetTimer时间间隔的问题

1、用WM_TIMER来设置定时器

SetTimer函数的原型

UINT_PTR SetTimer(

HWND hWnd,                      //
窗口句柄

UINT_PTR nIDEvent,          // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器

UINT nElapse,                     // 时间间隔,单位为毫秒

TIMERPROC lpTimerFunc  //
回调函数

);

返回值:

类型:UINT_PTR

如果函数成功,hWnd参数为0,则返回新建立的时钟编号,可以把这个时钟编号传递给KillTimer来销毁时钟.

如果函数成功,hWnd参数为非0,则返回一个非零的整数,可以把这个非零的整数传递给KillTimer来销毁时钟.

如果函数失败,返回值是零.若想获得更多的错误信息,调用GetLastError函数.

2、UINT nElapse, // 时间间隔,单位为毫秒

一直迷惑这个定时器是先执行一次,还是等待一个时间间隔再执行。上网查了一下有不少网友有同样的疑问。

经过查资料和实际操作。发现定时器是先等待一个时间间隔再执行第一次。

SetTimer时间间隔的问题

时间: 2024-08-08 13:07:01

SetTimer时间间隔的问题的相关文章

SetTimer函数的用法

什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数 了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd,          // 窗口句柄 UINT_PTR

控制台中使用SetTimer的提醒

SetTimer是设置定时器,每隔一段时间执行一个操作,原型如下 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 ); 它是通过分发WM_TIMER消息来触发回调函数的,看下面代码 [cpp] view plaincopy void CALLBACK T

SetTimer API函数

位于user32.dll中,可以每隔一段时间执行一段时间执行一件事的时候,可以使用它. 使用定时器,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序. 发送WM_TIMER消息和调用应用程序定义的回调函数.不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟. setTimer创建或设置一个定时器,该函数创建的定时器与Timer控件(定时器控件)效果相同. SetTimer 函数的原型: UINT_PTR SetTimer( HWND hWnd,

MFC的定时函数 SetTimer和结束killTimer

什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(  HWND hWnd,              // 窗口句柄  UIN

MFC 定时器用法 SetTimer、KillTimer

什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序.通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数. 1.1 用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(  HWND hWnd,              // 窗口句柄  UIN

C++ 定时器的用法:SetTimer和Ontimer

SetTimer函数的用法 1)用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer(                       HWND hWnd,//和定时器相关联的窗口              UINT_PTR nIDEvent,//一个非0的数字标志这个定时器              UINT uElapse,//指定时间间隔,以毫秒为单位              TIMERPROC lpTimerFunc//一般指定为n

有关SetTimer函数的用法

1 )用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTimerFunc // 回调函数 ); 例如 SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器 在MFC程序中SetT

关于SetTimer间隔小于OmTimer执行时间的问题

如果SetTimer的时间间隔为t,其响应事件OnTimer代码执行一遍的时间为T,且T>t.这样,一次未执行完毕,下一次定时到,这时候程序会如何执行? 可能的情况:1.丢弃还未执行的代码,开始新的执行:2.不丢弃,Timer消息进入消息队列排队,等到原来的代码执行完毕后,马上开始新的执行:3.重入,就是原来的还继续执行,同时又开始一个新的执行: 答案:第二个,或者,第一个丢弃.不过丢弃的情况是, 消息队列满了, 第二次的消息没进去. void COnTimer1Dlg::OnTimer(UIN

Settimer及回调函数的用法

在网上看了settimer的一些用法发现能用的真没有,,,,可能是我没找对地方,大部分都是无脑复制粘贴,浪费了很多时间,如果你是一个对这种定时器一无所知的小白,那么请你看进来一定不会让你失望的! 实用settimer的第一步引入头文件:#include <Windows.h> 然后我们来看一下settimer及其回调函数的使用: 首先我们来看settimer的原型:(如下所示)(这个仅仅是窗口的一个定时器函数,我们现在是想把它用到控制台程序的而一般没有窗口的线程系统是不会给他指定消息队列的)