我需要构建一个 VB6.0 ocx,它将用作一些外部 VB6.0 应用程序的插件
这个 ocx 包含几个子过程,它们应该作为一些外部事件(ocx 外部)的事件处理程序。
问题是,使用这个 ocx 的用户只会调用我的 ocx 子程序之一,而且只有一次。问题是,如何在一次初始化时将所有子过程/函数绑定到它们各自的外部事件,以便在它们的事件触发时调用我的过程?
我设法在外部应用程序本身中做到了这一点,但当我将这些代码移植到 OCX 并将其用作外部 vb 程序中的插件时却没有
假设这是外部 vb 应用程序中的原始事件处理程序:
Private Sub someExternalControl1_someEvent(someParameter as boolean)
MsgBox ("The original event handler")
End Sub
如果我这样做,在那个 vb 应用程序中:
dim withevents aaa as someExternalControl
set aaa = someExternalControl1
那么这个自定义事件处理程序也将在每次事件触发时与原始事件处理程序一起被调用,如上所述
Private Sub aaa_someEvent(someParameter as boolean)
MsgBox ("The custom event handler")
End Sub
但是当我把它放在 OCX 中时,我做不到同样的事情。因为我做不到:
Public WithEvents ocxMyPlugin As VBControlExtender
...
Set ocxMyPlugin = Controls.Add("myprogID.usercontrolname", "somename", Me)
Set ocxMyPlugin.object.someExternalControl2 = someExternalControl ' this will raise error