Windows Common Controls 6.0组件(MSCOMCTL.OCX)的正确来源是什么?

时间:2009-08-04 08:34:58

标签: com vb6 activex

我正在尝试编写ActiveX控件,并注意到我似乎无法在Visual Basic(6.0)中创建一个ActiveX控件,它具有稍微复杂的控件。简单的控件,如标签,按钮和复选框似乎工作正常,但只要我尝试添加例如对于我的表单的树控件,一旦我将ActiveX控件嵌入到另一台计算机上的某个主机应用程序中,它就会一直保持空白。它在我的开发盒上工作正常。

在浏览Projects-> Components(Ctrl + T)列表时,我发现两个库显然包含树控件:

  • Microsoft Windows Common Controls 5.0(SP2)
  • Microsoft Windows Common Controls 6.0(SP6)

只要我将这些库中的任何控件添加到我的表单中,当嵌入另一台计算机时,该表单将保持完全灰色。另一台计算机是一个Windows XP系统,所以我希望丢失的可再发行组件不会成为一个问题,因为Visual Basic 6有多大。可以肯定的是,我安装了VB6可再发行组件,但不幸的是,这没有什么区别。

有人知道为什么我的ActiveX控件会在其他计算机上保持灰色,但不是我的,只要我将上述库中的任何控件添加到我的表单中吗? FWIW我只需要一个树控件,所以如果有其他更合适的库可用 - 这对我来说没问题。

更新: 事实证明,将MSCOMCTL.OCX下载到另一台计算机上的C:\ WINDOWS \ SYSTEM32然后通过regsvr32 C:\WINDOWS\SYSTEM32\MSCOMCTL.OCX注册它会有所帮助。但是,我没有找到此文件的官方来源,并且手动运行COM注册看起来很麻烦。真的没有我可以使用的可再发行组件吗?

2 个答案:

答案 0 :(得分:10)

在XP及更高版本上预装了VB6运行时,但您引用的Common Controls组件不是。

尝试在客户端计算机或事件上安装Microsoft Visual Basic 6.0 Common Controls可再发行组件,以便更好地为您的应用程序进行设置。

编辑:

Opps,该链接用于不安装OCX的更新(如果尚未存在)。我找到的唯一可再发行组件是Windows Installer的merge module

答案 1 :(得分:1)

为了解决这个问题,我开发了一个.msi包。这里发布的源文件(WiX)和赌注: https://github.com/IT-Service/ITG.VB6CommonControlsRedist