我写了一个小东西,因为form没有用就移除了,直接使用模块的sub main(),但是又需要timer控件,我在dim里发现了timer ,定义了也赋值了但是无法使用。请问各位牛人这个该怎么办呢?

解决方案 »

  1.   

    使用SetTimer函数(API)!!!
    在该函数中设置一个回调函数处理代码即可!你自己上网查询一下,例子多的是!
      

  2.   

    看到多线程了,用多线程写了一个模块,可以用来代替timer,但是多线程在VB里的不稳定应该都知道吧····Option ExplicitPrivate Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
    Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Longpublic FinishSign as booleanPublic Sub SetTimer(eventstr As Long)                  Call CreateThread(Null, ByVal 1&, AddressOf Timer1, VarPtr(0), ByVal 0&, threadid)
               
    End SubSub Timer1()
           if finishsign = true then  '这个相当于timer里的enable属性
            '这里写Timer里的事件
           end if  
           Sleep 20000 ‘这个相当于间隔
                      
           Call Timer1
    End Sub
      

  3.   

    HOOK,自己截消息
    用SetTime定时发送消息。
      

  4.   

    一种是像2楼的多线程,多线程虽然不稳定,但是如果只用作触发timer还应该没问题
    一种是直接使用api settimer,这种东西俺也很少用,也不知道是否管用Option ExplicitDeclare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Public id_timer     As Long     '用来存放返回的定时器的IDDim percentdone As Long
    'Starttimer过程调用SetTimer函数生成定时器,hwnd和nIDEvent送入0表示在回调过程中不使用它们,uElapse置为100,让程序每100毫秒就调用一次回调函数;lpTimerFunc参数由AddressOfTimerProc将
    'TimerProc的地址送入函数.Public Sub StartTimer()
            id_timer = SetTimer(0, 0, 1000, AddressOf TimerProc)
    End Sub
    'Endtimer清除定时器,同时给用户一个信息反馈。
    Public Sub EndTimer()
            KillTimer 0, id_timer
            id_timer = 0
            MsgBox "Timer   has   been   killed!", vbExclamation, "Done!"
    End Sub'----回调过程
    Public Sub TimerProc()
        percentdone = percentdone + 1
        MsgBox percentdone
        If percentdone >= 10 Then
                EndTimer
                End
        End If
    End SubSub main()
        StartTimer
    End Sub