文章目录[隐藏]
timeSetEvent是winmm.dll里的一个函数,timeSetEvent,也叫多媒体定时器,它以毫秒为精确度,这个函数以一个指定的“时间事件”为开始,当这个事件被触发后,他会一毫秒为单位,触发他的自己的线程(他的回调函数或者是加入特定是时间对象),调用后,要在事件结束,进行timeKillEvent销毁。而SetTimer在毫秒精度上误差很大,也就是在会有10多毫秒的误差,SetTimer创建时钟销毁调用KillTimer
参考:
https://docs.microsoft.com/en-us/previous-versions/dd757634(v=vs.85)
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
.版本 2 .DLL命令 timeSetEvent, 整数型, "winmm.dll", "timeSetEvent" .参数 uDelay, 整数型 .参数 uResolution, 整数型 .参数 lpFunction, 子程序指针 .参数 dwUser, 整数型 .参数 uFlags, 整数型
.版本 2 .DLL命令 timeKillEvent, 整数型, "winmm.dll", "timeKillEvent" .参数 uID, 整数型
创建时钟和调用
.版本 2 .子程序 _按钮1_被单击, , , 创建时钟1 时钟1 = timeSetEvent (10, 0, &TimerProc, 0, 1)
回调事件
.版本 2 .子程序 TimerProc .参数 uID, 整数型 .参数 uMsg, 整数型 .参数 dwUser, 整数型 .参数 dw1, 整数型 .参数 dw2, 整数型 ‘调用的事件,这里随便举了一个例子 编辑框1.加入文本 (“1”)