您的位置:首页 > 其它

ACTIVEX DLL时,如何在回调函数中改变DLL的一些私有变量的值,并触发用户事件?

2007-10-16 09:38 525 查看
By CSDN daviddivad (你真行,居然比我还快! Scorpio)

请看例子:

两个类模块

clsTimer:

公有类,用于输出

clsSendMessage:

私有类,用于中转,便于触发公有类的事件

一个标准模块

modTime:

回调函数所在的模块

原代码:

clsTimer:

Option Explicit

Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Private m_lngTimerHandle As Long

Private WithEvents m_oMessage As clsSendMessage

Public Event Timer()

Public Sub StartTick()

m_lngTimerHandle = SetTimer(0, 0, 1000, AddressOf TimerFunc)

End Sub

Public Sub StopTick()

KillTimer 0, m_lngTimerHandle

m_lngTimerHandle = 0

End Sub

Private Sub Class_Initialize()

Set m_oMessage = g_oMessage

End Sub

Private Sub Class_Terminate()

KillTimer 0, m_lngTimerHandle

End Sub

Private Sub m_oMessage_MessageArrval()

WriteClick

RaiseEvent Timer

End Sub

Private Sub WriteClick()

Debug.Print "a tick"

End Sub

clsSendMessage:

Option Explicit

Public Event MessageArrval()

Public Sub SendMessage()

RaiseEvent MessageArrval

End Sub

modTime:

Option Explicit

Public g_oMessage As New clsSendMessage

Public Sub TimerFunc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)

g_oMessage.SendMessage

End Sub
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐