windows 定時執(zhí)行回調(diào)函數(shù)(C/C++)

用于需要定時執(zhí)行操作的程序,WINAPI的程序;

1、設(shè)置定時事件

MMRESULT timeSetEvent( UINT uDelay ,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?UINT uResolution ,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LPTIMECALLBACK fptc ,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?DWORD dwUser ,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?UINT fuEvent );

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

uResolution :以毫秒指定延時的精度,數(shù)值越小定時器事件分辨率越高。缺省值為1ms。

fptc :指向一個回調(diào)函數(shù)。

dwUser :存放用戶提供的回調(diào)數(shù)據(jù)。

fuEvent :指定定時器事件類型:

? ? ? ? ? ? ? ? TIME_ONESHOT:uDelay毫秒后只產(chǎn)生一次事件

? ? ? ? ? ? ? ? TIME_PERIODIC :每隔uDelay毫秒周期性地產(chǎn)生事件。

2、注銷定時事件

MMRESULT timeKillEvent(UINT uTimerID) ;

其中uTimerID是timeSetEvent的返回值,是事件的ID號,timeSetEvent必須返回ID號用于注銷;

3、回調(diào)函數(shù)

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

{

? ? ? ? ? ? ?//需要執(zhí)行的操作

}

回調(diào)的參數(shù)如不需要用到可不管,但是函數(shù)定義的參數(shù)類型和數(shù)量必須按照這個格式;

使用方法:

1、頭文件和庫必須加載

#include <Windows.h>

#include <Mmsystem.h>

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

2、注冊回調(diào)事件

MMRESULT timer_id;

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

其中,1000表示1秒;1表示精度為1毫秒;TimeCallbackFuction是回調(diào)函數(shù),定時執(zhí)行的程序?qū)懺诶锩妫?是用戶數(shù)據(jù),這里我沒用到,隨便寫了個;TIME_PERIODIC表示間隔前面設(shè)定的那個時間不斷循環(huán)執(zhí)行;

3、回調(diào)函數(shù)執(zhí)行

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

{

? ? ? ? ? ? ? //需要執(zhí)行的操作

}

回調(diào)函數(shù)里寫你的操作;

4、最后不需要使用定時器時需要注銷掉;

timeKillEvent(timer_id);

timer_id是前面創(chuàng)建獲取的ID號;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • 名稱 libev - 一個 C 編寫的功能全面的高性能事件循環(huán)。 概要 示例程序 關(guān)于 libev Libev 是...
    hanpfei閱讀 15,380評論 0 5
  • 一. NSTimer NSTimer的初始化方法有以下幾種: 會自動啟動, 并加入* MainRunloop*的*...
    codeshow閱讀 526評論 0 0
  • 叔叔說,一個女生,沒必要那么拼,可是我想說,我有自己想做的事,連命都可以豁出去,更可況如今只是累點,而我還活著呢,...
    vedia閱讀 222評論 1 0