我创建了一个公开事件的 .Net 程序集。我可以毫无问题地使用来自 VB6 的事件。现在我已将程序集部署给 PowerBuilder 开发人员,他说如果 COM 对象不是 ActiveX,他无法处理来自 COM 对象的事件。
ActiveX 事件与普通 COM 事件有什么不同?我是否应该实现一些额外的接口,以便 PowerBuilder 可以“看到”事件?
提前致谢。
我创建了一个公开事件的 .Net 程序集。我可以毫无问题地使用来自 VB6 的事件。现在我已将程序集部署给 PowerBuilder 开发人员,他说如果 COM 对象不是 ActiveX,他无法处理来自 COM 对象的事件。
ActiveX 事件与普通 COM 事件有什么不同?我是否应该实现一些额外的接口,以便 PowerBuilder 可以“看到”事件?
提前致谢。
这两个事件都是通过连接点(IConnectionPoint
和朋友)实现的。ActiveX 控件通常使用某些附加约束来实现连接点:
IDispatch::Invoke
以传递实际事件。IProvideClassInfo2
来提供此信息。PowerBuilder 或其他 COM 事件使用者可能会依赖上述一个或多个项目,因此它只能与某些事件源一起使用,而拒绝与其他事件源一起使用。