如何设置 1 毫秒时间间隔的事件 ?(150分)

  • 主题发起人 主题发起人 xfly
  • 开始时间 开始时间
X

xfly

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI 的Timer控件最短的时间间隔实际为 55 毫秒,而通过调用 timeSetEvent 函数<br>可实现以 1 毫秒的时间间隔触发事件,不知哪位高人知道如何使用 timeSetEvent 函数来<br>实现该功能?(不使用第三方控件)
 
timeSetEvent(<br>&nbsp; &nbsp; UINT uDelay, //时间间隔(单位:毫秒)<br>&nbsp; &nbsp; UINT uResolution,//允许误差范围(单位:毫秒)<br>&nbsp; &nbsp; LPTIMECALLBACK lpTimeProc,//回调函数<br>&nbsp; &nbsp; DWORD dwUser,//用户自定义参数<br>&nbsp; &nbsp; UINT fuEvent //定时类型 TIME_ONESHOT 仅执行一次; TIME_PERIODIC 每隔uDelay执行一次 <br>&nbsp; &nbsp;); <br>&nbsp;<br>例:<br>procedure MyTimeProc(uID,uMsg,dwUser,dw1,dw2:DWORD);stdcall;<br>//定时响应函数<br>//uID &nbsp;TimeEvent的ID号,dwUser &nbsp;与timeSetEvent中的dwUser相同; uMsg,dw1,dw2保留未用<br>begin<br>&nbsp;count:=count+1;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp;count:=0;<br>&nbsp;timeid:=TimeSetEvent(1,10,MyTimeProc,0,TIME_PERIODIC);<br>&nbsp;if timeid=0 then ShowMessage('set failed');<br>end;<br><br>
 
我觉得应该使用的函数是timeBeginPeriod。
 
用得着精确到毫秒吗?
 
我也觉得用不着精确到毫秒。
 
有这个必要吗?
 
多人接受答案了。
 
&nbsp; &nbsp;对zhhc的解答,我非常感谢,也非常满意。另外,在提<br>出问题的当天,我自己也摸索出了这个问题的解决方法。(与zhhc<br>的解答基本相同)对于 timeBeginPeriod 函数,我现在基本没有<br>多少了解,不知sam_lai朋友能不能详细说明一下。<br>&nbsp; &nbsp; 我是心理学专业的,经常用 DELPHI 和 BCB 编程序做心理<br>学实验,我做的实验对时间控制要求非常精确, 所以,毫秒级<br>的时间间隔一般情况下可能不必要,但对我来说却是必要的。<br>  其实在 BCB 下我已经能实现这种功能,但在 DELPHI 下却<br>一直实现不了,可能是我对 Object Pascal 语言的掌握还没有<br>到家吧。我是第一次上大富翁论坛,今后还请各位多多指教。
 
GetTickCount
 
后退
顶部