有没有准确的定时器?(100分)

  • 主题发起人 主题发起人 LoveDelphi
  • 开始时间 开始时间
L

LoveDelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
Timer精度不高,有没有准确的定时器?<br>&nbsp;使用 API 函数也可以
 
以前的问题里有,在大富翁的欢迎页里查一下定时器就会有答案的
 
大富翁练功场就有一位大侠写的控件,他自己的测试报告显示还是定时比较准确!
 
多媒体的timer
 
http://lgc.delphibbs.com/lgc/dispPkg.jsp?pid=4
 
不过多媒体的timer是立即中断你的程序执行callback函数的,<br>你的程序不管是在什么地方都停下来执行该callback函数,<br>所以在那个函数里面除了PostMessage和该timer有关的函数外,不能执行其他api<br>函数。(你执行其他api会发现好象没问题,但是忙的时候会、运气不好的时候会出错)<br><br>void CALLBACK TimeProc(<br> UINT uID,<br> UINT uMsg,<br> DWORD dwUser,<br> DWORD dw1,<br> DWORD dw2<br> )<br>{<br>PostMessage(((TForm1*)dwUser)-&gt;Handle,WM_USER,0,0 );<br>}<br><br><br><br><br>void __fastcall TForm1::FormCreate(TObject *Sender)<br>{<br>id=timeSetEvent(<br> 1000,<br> 0,<br> TimeProc,<br> int(this),<br> TIME_PERIODIC<br> );<br>}<br>//---------------------------------------------------------------------------<br><br><br>void __fastcall TForm1::ON_WM_USER(TMessage&amp; m)<br>{<br>Beep(100,100);<br>}<br><br>void __fastcall TForm1::FormDestroy(TObject *Sender)<br>{<br>if(id)<br> timeKillEvent(id);<br>}<br><br><br>
 
Pipi.你的API掌握的挺多的,有空教教我哇! &nbsp;{B-)
 
我有高精度的Timer控件,如果你需要我可以Email给你。你Email通知我。
 
&gt;&gt;HCHANGQI:嘻嘻,来一个吧!<br><br>&nbsp;E-mail: lovedelphi@263.net
 
到这儿找找,有很多 http://vcl.vclxx.com/DELPHIGB/DEFAULT.HTM
 
HCHANGQI,谢谢,也请给我一个: &nbsp; &nbsp;mophy@188.net
 
多媒体时钟就是搞精度的
 
以前用vb作过一个较准确的定时器,大致是<br>在ontime事件里,记录上次触发的时间,和这一次<br>的相比较,根据结果调整定时器的触发间隔,当然<br>这只能把误差调整到一定范围内。<br>至于完全精确,HCHANGQI可以大概介绍一下吗?
 
你可以看看‘中国水利水电出版社‘出版的《DDELPHI 多媒体实用编程技术》一书。<br>其中用了 QueryPerformanceFrequency()函数,具体使用可查看MSDN。
 
到urus.soim.net来找,有最新版的
 
多谢多谢!
 
多人接受答案了。
 
HCHANGQI,<br>我现急一个高精度的定时<br>(采集系统,采集到的数据又为时间片)<br>请给我一个: &nbsp; &nbsp;zsz0401@163.net
 
后退
顶部