http://www.csdn.net/cnshare/soft/5/5704.html

解决方案 »

  1.   

    1、Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
    dim lngTickCount as long
    lngTickCount=GetTickCount()
    2-1、Private Declare Function SetTimer Lib "user32" Alias "SetTimer" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long   'uElapse 以毫秒计的超时时间
    Private Declare Function KillTimer Lib "user32" Alias "KillTimer" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Private Sub Form_Load()
        SetTimer me.hwnd,1,1,Addressof 我是Timer的回调函数    
    End Sub
    Private Sub Form_Unload()
        KillTimer me.hwnd,1    
    End Sub
    2-2、
    在工程中添加一个标准模块,并在里面声明一个公有过程。假设为:
    public Sub 我是Timer的回调函数(byval hwnd as long,byval uMsg as long,byval idEvent as long,byval dwTime as long)
    ......
    end Sub           '过程名可以改,参数名可以改,但参数数量,参数的数据类型不可改动。切记,切记!
    Addressof 我是Timer的回调函数     就是你想要的回调函数地址.
    参数 hwnd 就是接到WM_TIMER消息的窗口的句柄
         uMsg=WM_TIMER
         idEvent 就是产生WM_TIMER消息的Timer的标识
         dwTime  就是系统启动以来到发送这个消息经历的以毫秒计的时间OK ?:)
      

  2.   

    据说SetTimer还有50毫秒的限制?