美文网首页
windows 定时执行回调函数(C/C++)

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

作者: chenzefa | 来源:发表于2017-11-02 10:10 被阅读0次

    用于需要定时执行操作的程序,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号;

    相关文章

      网友评论

          本文标题:windows 定时执行回调函数(C/C++)

          本文链接:https://www.haomeiwen.com/subject/zmqopxtx.html