代码之家  ›  专栏  ›  技术社区  ›  JonN

如何在vb6中声明不包含在窗体中的ocx控件

  •  2
  • JonN  · 技术社区  · 6 年前

    我正在尝试在vb6 active x exe中创建ocx控件的第二个实例。OCX控件的第一个实例由ActiveX EXE中的表单包含并可见。我正试图创建第二个实例作为activex exe类的成员。此实例将不包含在窗体中,并且在屏幕上不可见。我可以声明实例,但找不到用新运算符初始化实例的正确语法。

    ActiveX VB6模块内部声明

     Private m_ZoomSigPlus2 As SIGPLUSLib.sigPlus 
    

    ActiveX初始化()函数中的初始化

     set m_ZoomSigPlus2 = New SIGPLUSLib.sigPlus 
    

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

    我试着看看作为表单一部分的实例是如何初始化的,但是似乎没有显式的 新的 控件被窗体包含时的操作。表格中的声明是

       Begin SIGPLUSLib.SigPlus SigPlus1 
          Height          =   2415
          Left            =   0
          TabIndex        =   4
          Top             =   0
          Width           =   5055
       End
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   JonN    6 年前

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

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

    有人问我为什么要这样做。好吧,ocx控件与一些捕获传入数据的外部硬件一起工作。ocx还为传入的数据集提供了一些处理方法。但是,当处理完成时,需要关闭传入的数据收集。通过创建第二个实例,我应该能够在捕获传入数据(现在是必需的)的过程中处理数据集。有人可能会争辩说,ocx的另一种更具凝聚力的设计可能已经消除了创建第二个实例的需要,但此时ocx的重新设计还没有提出来。