2009-07-31 80 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