新建From1(窗体),新建Command1(按钮CommandButton),代码:
Private Sub Command1_Click()
' 使用AddressOf获取s_TimerProc过程的地址并传递给timeSetEvent
timeSetEvent 1000, 0, AddressOf s_TimerProc, 0, 0
End Sub
新建Module1(模块),代码:
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal delay&, ByVal resolution&, ByVal lpFunction&, ByVal dwUser&, ByVal fuEvent&) As Long
Public Sub s_TimerProc(ByVal uID&, ByVal uMsg&, ByVal dwUser&, ByVal dw1&, ByVal dw2&)
' 处理计时器事件
MsgBox "定时器启动了!"
End Sub
AddressOf 不能直接用于窗体(Form)中的过程,除非这些过程被声明为 Public 或 Friend 并且在标准模块(.bas 文件)中。这是因为 VB6 的编译方式限制了它只能为模块级的过程生成稳定的地址。