oop – VB6实现和事件

前端之家收集整理的这篇文章主要介绍了oop – VB6实现和事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个旧的VB6项目,我试图添加单元测试.我通过嘲弄对象破坏了类中的依赖.一切都进行得很好,直到我发现一些依靠事件发生,现在我已经打了墙.

这是一个很快的例子,我正在努力做的不工作:

ITab.cls:

@H_301_5@Option Explicit Public Event Click(tabNumber As Integer) Public Sub SomeOtherFunction() End Sub

clsRealTab.cls:

@H_301_5@Option Explicit Implements ITab Public Event Click(tabNumber As Integer) Public Sub ITab_SomeOtherFunction() 'code here' End Sub

frmMain.frm:

@H_301_5@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

有没有人知道有没有办法做这个工作或另一种方式去处理这种情况?

我实现了一个回调接口,我称之为ITabEventsHandler.看起来像这样:

@H_301_5@Option Explicit Public Sub Click(intPrevIoUsTab As Integer,objSSTab As Object) End Sub

然后,我将ImabeventsHandler应用到我的表单中,并将表单作为ITabEventsHandler参数传递给我的clsTab初始化程序.而不是提高自定义Click(…)事件,我可以调用mTabEventsHandler.Click(…).

感谢您的建议!

你根本不能在VB6中实现源接口.所以简短的答案是“不,你不能这样做”.你可以用直接的typelib编辑进行攻击,但是这样会很快就会变得丑陋.

如果你必须通过不同的(mock)类“实现”这些,你可以考虑你的情况下的回调接口.

猜你在找的VB相关文章