【发布时间】:2010-10-02 06:36:00
【问题描述】:
我有一个 VB.NET 应用程序并使用一些第三方(封闭源代码)ActiveX 控件。其中一个控件代表一个“相机”(通过多个接口连接),我尝试编写一个示例,如何在一个应用程序中使用多个相机。为此,我将多个“相机”对象动态分配为一个数组,该数组按预期工作:
Const NUM_CAMERAS = 2
Private MyCameras(NUM_CAMERAS ) As xxx.MCamera
但是相机对象需要分配WithEvents,因为它们会在拍摄新图像时引发事件。我发现 WithEvents 变量不能作为数组输入,这是一个很常见的问题,所以我还找到了一些解决方法:http://www.dreamincode.net/code/snippet885.htm
http://www.xtremevbtalk.com/archive/index.php/t-223970.html
这已经非常有用了,我将其应用到我的概念中。所以我有一个 MyCameras 数组和一个 MyCamera 都“没有事件”,首先分配一个新的 MyCamera 对象,添加一个事件处理程序,然后将其放入数组中。不幸的是,我在调用时遇到错误
AddHandler Camera.ProcessModifiedImage, AddressOf MyHook
通常“MyHook”被声明为
Private Sub MyHook (ByVal sender As Object, ByVal ModifiedBuffer As xxx.ProcessModifiedImageEvent) Handles Camera.ProcessModifiedImage
就像在“按钮示例”中一样,我刚刚删除了“Handles Camera.ProcessModifiedImage”,但我收到一个错误,即“MyHook”与委托的签名不同
Delegate Sub ICameraEvents_ProcessModifiedImageEventHandler(ImageIndex as Integer)
有没有人知道如何解决这个问题以及改变什么?如有必要,我可以在明天发布更多代码和详细信息。
【问题讨论】:
-
只是一个小问题,但您的 MyCameras 数组最终会按照您的编码方式包含 3 个元素。
-
是的,我知道这没关系。相机的最大数量是预先知道的,我只是想避免分配 MyCamera1、MyCamera2 等。