MMRESULT timeSetEvent( UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
WORD dwUser,
UINT fuEvent )
uDelay:以毫秒指定事件的周期。
Uresolution:以毫秒指定延時的精度,數值越小定時器事件分辨率越高。缺省值為1ms。
LpTimeProc:指向一個回調函數,為用戶自定義函數,定時調用。
DwUser:存放用戶提供的回調數據。
FuEvent:指定定時器事件類型: TIME_ONESHOT:uDelay毫秒后只產生一次事件; TIME_PERIODIC :每隔uDelay毫秒周期性地產生事件。
具體應用時,可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在lpTimeProc回調函數中(如:定時采樣、控制等),從而完成所需處理的事件。需要注意的是:任務處理的時間不能大於周期間隔時間。另外,在定時器使用完畢后,應及時調用timeKillEvent()將之釋放。
1、timeSetEvent最長時間間隔不能超過1000秒,即1000000毫秒,超過返回失敗,可用CreateTimerQueryTimer或SetTimer(回調的方式)代替
2、timeSetEvent會生成一個獨立的Timer回調線程,屬多線程
3、timeSetEvent可創建高精度定時器,精確到1ms,SetTimer無法精確到1ms
4、timeKillEvent關掉定時器的函數,一定要一一對應,每次timeSetEvent返回的定時器的ID是不一樣的,調用一次timeSetEvent就會產生一次Id,調用了幾次timeSetEvent,就需要調用幾次timeKillEvent ,而且必須是相對應的ID,否則可能出現程序崩潰!