VB的Timer控件太慢了,请问有没有真正精确到1000分之1秒的?
谢谢!

解决方案 »

  1.   

    http://www.sijiqing.com/vbgood/code/index.asp?action=read&id=1035
      

  2.   

    其实timer 控件本身就是不精确的, 在系统中,  只要有别的消息进入消息队列它就会停止
      

  3.   

    Public Declare Function GetTickCount Lib "kernel32" () As Long
    t = (GetTickCount - t) / 1000
      

  4.   

    2、与时间相关的常用控件。
      Timer控件是一个奇特的控件。Timer 控件会在固定时间间隔中运行Timer事件。此间隔是由Interval属性决定的,其单位为千分之一秒。但不要以为将其值设为0事件就可不间断地运行了。结果恰恰相反,事件将一次也不运行。同时还要注意变量的声明。如:
      Private Sub Timer1_Timer()
      Dim a As Integer
      a = a + 1
      Print a
      End Sub
      
      Dim a As Integer
      Private Sub Timer1_Timer()
      a = a + 1
      Print a
      End Sub
      试试看,其结果是完全不同的。
      当需要用户输入时间时,为避免出现错误的时间,可以使用日历控件。它只允许用户在日历表中选择日期,避免了错误的发生。
      3、记录时间的API函数。
      GetTickCount Windows API函数可返回 Windows 启动以来消失的毫秒数。其精度高于VB的Timer 函数。且Timer 函数会在午夜清零,而GetTickCount 函数只有当机器连续使用49.7天后才返回零。这为我们编程提供了很大的方便。例如想知道你的电脑连续工作多久了,可新建一工程,然后添加以下代码:
      Private Declare Function GetTickCount Lib “kernel32" () As Long
      Private Sub Form_Load()
      Dim d As Date
      Dim t As Integer
      Form1.Show
      t = GetTickCount \ 1000
      d = TimeSerial(0, 0, t)
      Print d
      End Sub