【发布时间】:2010-12-16 09:00:34
【问题描述】:
或一个 VB6 兼容的集合对象。
我们通过一组 API 为我们的 .net 产品提供挂钩。
我们需要继续支持从 VB6 调用我们 API 的客户,因此我们需要继续支持 VB6 集合对象(在 .net 中使用 VBA.Collection 很简单)。
问题在于支持一些使用 VBScript 调用我们的 API 的网站。 VBScript 没有集合对象的概念,因此为了创建一个集合对象以传递给我们的 API,我们构建了一个提供“CreateCollection”方法的 VB6 ActiveX DLL。此方法只是创建并传回一个新的集合对象。问题解决了。
经过多年的修剪、移植和重建,这个 DLL 是我们仅有的 VB6 代码。因此,我们仍然需要在我们的开发和构建机器上安装 Visual Studio 6。
我对我们对这个 DLL 的依赖不满意有几个原因(我个人不喜欢 VB6 不是其中之一)。最重要的是微软不再支持 Visual Studio 6。
我的问题是,如何让 ATL 创建一个实现与 VB6 集合对象相同接口的集合对象。
我对 C++ 有很好的了解,但对 ATL 的掌握很松散——我可以创建简单的对象并实现简单的方法,但这超出了我的能力范围。
【问题讨论】:
-
听起来这个 VB6 DLL 很少更改。你真的需要那么频繁地构建它吗?我的想法是不再支持VB6 IDE,但支持VB6 runtime。如果你不需要大量构建DLL,IDE不支持是不是一个大问题?
-
我知道你在说什么,但我们有法律义务能够构建我们所有的代码。我们不能拥有无法构建的非 3rd 方组件。
-
VB6 中的“强类型”集合仍然通过 IEnumVARIANT 枚举。强制转换是隐式完成的(并且可能会失败)。
标签: c++ vb6 atl compatibility