VB 精确的定时与计时

前端之家收集整理的这篇文章主要介绍了VB 精确的定时与计时前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Option Explicit@H_403_1@ '****************************************@H_403_1@ 'Function:用于精确的定时与计时@H_403_1@ 'author: QJP@H_403_1@ 'Date: 20120626@H_403_1@ '****************************************

Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long@H_403_1@ Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long@H_403_1@ Private m_StartTime As Currency@H_403_1@ Private m_cpuFr As Currency@H_403_1@ @H_403_1@ @H_403_1@ Public Declare Function timeGetTime Lib "winmm.dll" () As Long@H_403_1@ Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function QueryTimerStart(Optional dStartCount As Currency) As Boolean@H_403_1@ Dim dResult As Long@H_403_1@ If QueryPerformanceFrequency(m_cpuFr) Then@H_403_1@ dResult = QueryPerformanceCounter(m_StartTime)@H_403_1@ Else@H_403_1@ m_cpuFr = 0@H_403_1@ m_StartTime = timeGetTime()@H_403_1@ End If

dStartCount = m_StartTime@H_403_1@ End Function

Public Function QueryTimerStop(dwMilliseconds As Long,Optional dStartCount As Currency = 0) As Boolean

Dim dResult As Long@H_403_1@ Dim dStopTime As Currency

If m_cpuFr > 0 Then@H_403_1@ dResult = QueryPerformanceCounter(dStopTime)@H_403_1@ If dStartCount = 0 Then dStartCount = m_StartTime@H_403_1@ dResult = (dStopTime - dStartCount) / m_cpuFr * 1000@H_403_1@ Else@H_403_1@ If dStartCount = 0 Then dStartCount = m_StartTime@H_403_1@ dResult = dStopTime - dStartCount@H_403_1@ End If@H_403_1@ dwMilliseconds = dResult@H_403_1@ End Function

@H_403_1@ ' '延时函数' 毫秒@H_403_1@ Public Sub Delay(DelayNum As Long)@H_403_1@ Dim Ctr1,Ctr2,Freq As Currency@H_403_1@ Dim Start As Long ',Stime2 As Single@H_403_1@ @H_403_1@ If QueryPerformanceFrequency(Freq) Then@H_403_1@ '支持高精度时@H_403_1@ QueryPerformanceCounter Ctr1@H_403_1@ Do@H_403_1@ Sleep 1@H_403_1@ DoEvents@H_403_1@ QueryPerformanceCounter Ctr2@H_403_1@ Loop While (Ctr2 - Ctr1) / Freq * 1000 < DelayNum@H_403_1@ Else@H_403_1@ Start = timeGetTime@H_403_1@ Do While timeGetTime < Start + DelayNum@H_403_1@ Sleep 1@H_403_1@ DoEvents@H_403_1@ Loop@H_403_1@ End If@H_403_1@

End Sub

猜你在找的VB相关文章