如何在VB6中声明但不在表单中的OCX控件

时间:2018-07-10 22:22:56

标签: vb6 activex ocx

我正在尝试在VB6 Active X EXE中创建OCX控件的第二个实例。 OCX控件的第一个实例由ActiveX EXE中的表单包含并在其中可见。我正在尝试将第二个实例创建为ActiveX EXE类的成员。该实例将不包含在表单中,并且在屏幕上不可见。我已经能够声明实例,但是找不到使用New运算符初始化该实例的正确语法。

ActiveX VB6模块内部的声明

InformationFlow

ActiveX_Initialize()函数中的初始化

 Private m_ZoomSigPlus2 As SIGPLUSLib.sigPlus 

编译错误:无效使用New关键字

我尝试查看如何初始化作为表单一部分的实例,但是当控件包含在表单中时,似乎没有明确的 New 操作。形式的声明为

 set m_ZoomSigPlus2 = New SIGPLUSLib.sigPlus 

1 个答案:

答案 0 :(得分:1)

似乎创建与表单不关联的OCX控件实例的正确方法是使用CreateObject函数。

Private m_ZoomSigPlus2 As Object

64  Set m_ZoomSigPlus2 = CreateObject("SIGPLUS.SigPlusCtrl.1")
66  m_ZoomSigPlus2.InitSigPlus

有人问我这样做的原因。 OCX控件可以与一些捕获传入数据的外部硬件一起使用。 OCX还为传入数据集提供了一些处理方法。但是,完成该处理后,需要关闭传入数据收集。通过创建第二个实例,我应该能够在捕获所需的传入数据期间处理数据集。有人可能会争辩说,OCX的另一种更具凝聚力的设计可以消除创建第二个实例的需要,但是目前还没有重新设计OCX的想法。