如何在VB6中声明OCX控件但不包含在窗体中

How to declare OCX control in VB6 but not contained by a form

我正在尝试在 VB6 Active X EXE 中创建 OCX 控件的第二个实例。 OCX 控件的第一个实例包含在 ActiveX EXE 的窗体中并在其中可见。我正在尝试创建第二个实例作为 ActiveX EXE class 的成员。此实例不会包含在表单中,也不会在屏幕上显示。我已经能够声明该实例,但找不到使用 New 运算符对其进行初始化的正确语法。

ActiveX VB6 模块中的声明

 Private m_ZoomSigPlus2 As SIGPLUSLib.sigPlus 

ActiveX_Initialize() 函数中的初始化

 set m_ZoomSigPlus2 = New SIGPLUSLib.sigPlus 

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

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

   Begin SIGPLUSLib.SigPlus SigPlus1 
      Height          =   2415
      Left            =   0
      TabIndex        =   4
      Top             =   0
      Width           =   5055
   End

创建与窗体无关的 OCX 控件实例的正确方法似乎是使用 CreateObject 函数。

Private m_ZoomSigPlus2 As Object

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

有人问我为什么要这样做。好吧,OCX 控件可以与一些捕获传入数据的外部硬件一起使用。 OCX 也有一些处理传入数据集的方法。但是,当该处理完成时,需要关闭传入数据收集。通过创建第二个实例,我应该能够在捕获现在需要的传入数据期间处理数据集。有人可能会争辩说,OCX 的另一种更具凝聚力的设计可能已经消除了创建第二个实例的需要,但目前 table 并未对 OCX 进行重新设计。