2009-07-31 77 views
15

我有一个旧的VB6项目,我试图添加单元测试。我通过嘲笑对象打破了类的依赖关系。一切都很顺利,直到我发现一些引发事件的依赖关系,现在我已经遇到了困难。VB6实现与事件

这里是我想要做的是不工作一个简单的例子:

ITab.cls:

Option Explicit 

Public Event Click(tabNumber As Integer) 

Public Sub SomeOtherFunction() 

End Sub 

clsRealTab.cls:

Option Explicit 
Implements ITab 

Public Event Click(tabNumber As Integer) 

Public Sub ITab_SomeOtherFunction() 
    'code here' 
End Sub 

frmMain。 frm:

Option Explicit 

Private WithEvents mTab as ITab 

Public Sub Main() 
    Set mTab = New clsRealTab 'gives "Object or class does not support the set of events" error' 
End Sub 

Doe任何人都知道是否有办法做出这样的工作或另一种方式来处理这种情况?

我实现了一个我称为ITabEventsHandler的回调接口。它看起来像这样:

Option Explicit 

Public Sub Click(intPreviousTab As Integer, objSSTab As Object) 

End Sub 

然后我说Implements ITabEventsHandler我的形式,并通过形式为ITabEventsHandler参数我clsTab初始化。除了提出自定义的Click(...)事件外,我可以致电mTabEventsHandler.Click(...)

感谢您的建议!

回答

10

根本不能在VB6中“实现”源接口。所以简短的回答是“不,你不能这样做”。你可以用直接的typelib编辑来破解它,但这会很快变得丑陋。

如果您必须通过不同的(模拟)类“实现”这些类,则可以考虑回调接口。

+0

我想过做一个回调接口,它似乎会工作。 – 2009-07-31 17:22:41