c++ - 在 Microsoft 软件兼容性之外使用 ActiveX 控件的原因?

标签 c++ visual-c++ activex

不幸的是,我继承了一个大量使用 ActiveX 控件的遗留项目。作为一名新的软件工程师,我以前从未需要使用 ActiveX,据我所知,它已经被弃用了。据我了解,它是一种网络技术,但它用于与各种 Microsoft 产品兼容。

该软件被用来控制一台重型机械,所以我真的不明白它与网络技术的联系。最终,客户将从我们这里获得一个 DLL,他们将使用它来对机器进行编程。该 DLL 具有控制机器各个部分的低级驱动程序,无论是通过 PCI 还是 RS232。但是,它还会在与机器交互时更新这些 ActiveX 控件。

如果有人对 ActiveX 技术更有经验,我将不胜感激,可以让我了解为什么在这个应用程序中可能会使用它。我能想到的唯一原因是,由于该产品将在工厂环境中使用,也许远程控制可能很重要。我们的大部分产品都使用 SECS/GEM technology .

将控件添加到 Excel 电子表格只会导致页面上出现白色椭圆。此项目中的所有 ActiveX 控件都是如此。

最佳答案

COM 的设计使得客户端可以用任何语言编写,只要它们可以 (a) 查询接口(interface)的 COM 注册表/ODL,以及 (b) 按照 COM 规范编码数据。对于常规的“C”DLL,需要获取每个函数的签名和调用约定,通常带有头文件,然后匹配二进制接口(interface)。 COM 试图使这更容易。

ActiveX 被设计为使用 COM 接口(interface)构建 OLE 可嵌入 GUI 控件的一种方式。但它也可以用作实际上不充当用户界面项的“ headless ”控件的容器,以通过 COM 公开 API。最好的例子可能是 ASP 和 ADO(ActiveX 数据对象),尽管还有很多第三方对象。

很明显,COM 和 ActiveX 是较旧的技术,在过去 20 年里出现了其他技术。

关于c++ - 在 Microsoft 软件兼容性之外使用 ActiveX 控件的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088939/

相关文章:

c++ - 如何使用 wxWidgets C++ 加载 gif?

c++删除动态数组的1个元素?

c++ - VC++ win32 API编程 : how can I get the image out of the clipboard and display it in a windows?

excel - VBA ActiveX 控件的大小随着远程桌面连接的增加而增大

c# - 使用 c# 运行带有 activex 对象的 dll

c++ - 使用 libfreenect2 构建

c++ - 代码::阻止问题运行

c++ - 为什么我不能将 std::map 的条目解压到引用中?

c++ - 基本控制台打印程序

javascript - Internet Explorer 9/JavaScript : Disable confirm alert/pop-up for ActiveX