VB 6中的COM对象:用户定义类型未定义



在VB6项目中,我添加了对COM dll的参考:c:windowssystem32locationapi.dll

下面的代码工作得很好,对象的方法/属性可以正确访问:

Public civicfactory
Set civicfactory = CreateObject("LocationDisp.CivicAddressReportFactory")

然而,它的事件不起作用-我无法捕获它们。我想我需要像这样声明对象:

Public WithEvents civicfactory As LocationDisp.CivicAddressReportFactory

但是这给了我错误"用户定义类型未定义"在这一行。

有谁能告诉我为什么第一个代码工作得很好?

因为我的目的是让事件处理程序工作,你能指出我的代码中任何错误或缺失的东西吗?

Public civicfactory
Private Sub civicfactory_NewCivicAddressReport(report)
    MsgBox "New civic address report arrived"
    DisplayCivic (report)
End Sub
Set civicfactory = CreateObject("LocationDisp.CivicAddressReportFactory")
civicfactory.ListenForReports (1000)

类似的代码在VBScript中工作,但我不能让它在VB 6中工作-事件处理程序从未被调用。

提前感谢!

我没有在Windows 7上开发,所以我不能测试它,但我认为你需要实现ILocationEvents接口,然后创建这个类的实例,并将其传递给CivicAddressReportFactory对象的ILocation接口的RegisterForReport方法。

换句话说,他们根本不需要实现事件,而是得到COM回调,也就是。"脚本事件。"

这是可行的,并且需要使用许多新的COM库,因为它们将斜视放在VB6和其他ActiveX主机上。例如,你必须做这样愚蠢的事情来使用XP和更高版本的UPnP库,使用MSXML Helper对象进行异步请求等。

应该受到谴责,这是真的。但是你对Microsoft.Net有什么期望呢?

把它想象成竞争优势一旦你解决了它。

这一行

Public WithEvents civicfactory As LocationDisp.CivicAddressReportFactory 
如果您向COM类型库添加引用,

将工作(在Project菜单上,选择References,并向您的typelib添加引用)

相关内容

  • 没有找到相关文章

最新更新