vb中怎样编程实现毫秒以下的时间差计算?如:t1-t2=0.00005s
好像vb中只能是整数秒的时间差计算,能否介绍简单一点的算法实现毫秒以下的时间差计算?
第1个回答 2007-04-21
可以用Windows API的timeGetTime函数,此一函数会传回Windows开机以来所经过的时间,时间单位是1/1000秒, 举例来说, 开机经过 2 分钟, 则传回值等于 2*60*1000,timeGetTime的优点是时间可以精确到1/1000 秒,所以可以用来解决上述的问题,细节如下:
1. API 的声明:
Private Declare Function timeGetTime Lib "winmm.dll" Alias "timeGetTime" () As Long
注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保留字去掉。
2. 程序范例:
Dim tm1 As Long
Do
tm1 = timeGetTime
While timeGetTime - tm1 <5 ' 等于 5/1000="0.005" 秒
DoEvents
Wend
...做某一件工作
Loop
1. API 的声明:
Private Declare Function timeGetTime Lib "winmm.dll" Alias "timeGetTime" () As Long
注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保留字去掉。
2. 程序范例:
Dim tm1 As Long
Do
tm1 = timeGetTime
While timeGetTime - tm1 <5 ' 等于 5/1000="0.005" 秒
DoEvents
Wend
...做某一件工作
Loop
第2个回答 2007-04-12
我有一个现成的作品.是一个不错的类
HighPerformanceTimmer.cls
用到以下的API
以下是小部份
'2007/3/31
'高性能计时器
'-----------------------------------------
Public Enum qcScaleLevel
qcMicrosecond = 0 '微秒
qcMillisecond = 1 '毫秒
qcSecond = 2 '秒
End Enum
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
加分的话,我给一个给你.
HighPerformanceTimmer.cls
用到以下的API
以下是小部份
'2007/3/31
'高性能计时器
'-----------------------------------------
Public Enum qcScaleLevel
qcMicrosecond = 0 '微秒
qcMillisecond = 1 '毫秒
qcSecond = 2 '秒
End Enum
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
加分的话,我给一个给你.