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
请看例子:
两个类模块
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
相关文章推荐
- 如何触发<z:select>值改变事件
- Flex中如何通过监听scroll事件检测用户改变DateChooser控件选中月份的例子
- 改变变量触发事件
- 一个aspx页面有2个按钮,都是服务器控件,服务器上的DLL如何知道用户点击了哪个按钮,从而按钮的事件函数被调用
- DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件-转
- 1.样式表的一些bug, 2.如何通过键盘事件插入spinbox,3.不改变系统编码的前提下,单独转换某一字体编码,4.多色彩颜色失败
- javascript改变asp:textbox的值,如何触发OnTextChanged 事件
- MINA 2.0.9: 用户定义的事件是如何触发的
- DataGridView中DataGridViewComboBoxColumn的一些相关应用(一)让其值改变时触发事件
- C#改变变量触发事件
- 在事件触发的时候,有时我们需要一些模拟用户行为的操作。例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击。
- C#调用C++DLL中的回调函数(异步的情况,DLL中会在事件触发时调用函数)
- 安卓如何做到当在未来的某一天触发一些事件,获取网络时间
- c# 自定义事件,实现变量的值改变后就触发该事件
- UITabBarItem 如何触发点击事件
- 如何暴露用户控件中的子控件的事件
- asp.net 同一个页面中如何保持变量的值在多个事件中变换???
- 如何恢复linux的环境变量ubuntu中root用户没有办法使用命令
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- 微信小程序开发系列五:微信小程序中如何响应用户输入事件