windows 定时执行回调函数(CC++)

windows 定时执行回调函数(CC++),第1张

用于需要定时执行 *** 作的程序,WINAPI的程序;

1、设置定时事件

MMRESULT timeSetEvent( UINT uDelay ,

                                                 UINT uResolution ,

                                                 LPTIMECALLBACK fptc ,

                                                 DWORD dwUser ,

                                                 UINT fuEvent )

uDelay:以毫秒指定事件的周期。

uResolution :以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。

fptc :指向一个回调函数

dwUser :存放用户提供的回调数据。

fuEvent :指定定时器事件类型:

                TIME_ONESHOT:uDelay毫秒后只产生一次事件

                TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。

2、注销定时事件

MMRESULT timeKillEvent(UINT uTimerID)

其中uTimerID是timeSetEvent的返回值,是事件的ID号,timeSetEvent必须返回ID号用于注销;

3、回调函数

void WINAPI fptc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)

{

             //需要执行的 *** 作

}

回调的参数如不需要用到可不管,但是函数定义的参数类型和数量必须按照这个格式;

使用方法:

1、头文件和库必须加载

#include <Windows.h>

#include <Mmsystem.h>

#pragma comment(lib, "Winmm.lib")

2、注册回调事件

MMRESULT timer_id

timer_id = timeSetEvent(1000, 1, (LPTIMECALLBACK)TimeCallbackFuction, 1, TIME_PERIODIC)

其中,1000表示1秒;1表示精度为1毫秒;TimeCallbackFuction是回调函数,定时执行的程序写在里面;1是用户数据,这里我没用到,随便写了个;TIME_PERIODIC表示间隔前面设定的那个时间不断循环执行;

3、回调函数执行

void WINAPI TimeCallbackFuction(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)

{

              //需要执行的 *** 作

}

回调函数里写你的 *** 作;

4、最后不需要使用定时器时需要注销掉;

timeKillEvent(timer_id)

timer_id是前面创建获取的ID号;

C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的

举个例子:

for(i=0i<xi++)

for(j=0j<120j++)

这是延时x毫秒的for循环语句。

值得注意的是记得最后的;一定得记得写。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11903308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存