让时间更精确 释月 1998年 第36期 13版   在应用VB编程的时候,你是否发现VB的时间控制并不十分精确,在VB中我们有时需要一个比VB自带的now()更精确的计时函数,下面的BetterNow()就是这样的一个函数,在Pentium 166 MMX的机器上,它大概每10微秒执行一次,而VB自带的函数是每180微秒执行一次。ButterNow()更精确,它支持1毫秒的事件触发,而VB的now()只支持1000毫秒的事件触发。同样的它也比Timer()更快更精确,因而它可以在记录时间流逝方面替代Timer(),比Timer()更好的是它不会在每天午夜自动清零。   #If Win16 Then   Private Declare Function timeGetTime Lib _   ″MMSYSTEM.DLL″ () As Long   #Else   Private Declare Function timeGetTime Lib ″winmm.dll″ _   () As Long   #End If   Function BetterNow() As Date   Static offset As Date   Static uptimeMsOld As Long   Dim uptimeMsNew As Long   ′定义一秒   Const oneSecond=1/(24#*60*60)   ′定义一毫秒   Const oneMs=1/(24#*60*60*1000)   uptimeMsNew=timeGetTime()   ′如果是第一次调用函数或运行时间超过47天,重新计算时间。   If offset=0 Or uptimeMsNew < uptimeMsOld Then   offset=Date-uptimeMsNew*oneMs+CDbl(Timer)*_   oneSecond   uptimeMsOld=uptimeMsNew   End If   BetterNow=uptimeMsNew*oneMs+offset   End Function