你是否正在寻找关于activex控件是什么的内容?让我把最高级的东西奉献给你:
VC++编写ActiveX控件
VC++编写ActiveX控件
作者:一点一滴的Beer
前言:
暑假在做一个项目的时候,本来是用C#.NET来写的一个港口进出闸的流程控制程序,里面涉及一个响应用PLC的采集信息的问题(PLC用串口和工控机相连接),然后思考如何用C#写串口通讯程序,结果师兄在一旁直接用VC++写了一个“*.ocx控件”,并在自己的电脑上进行了测试,完工后就把生成的“*.ocx”控件注册文件复制到了我们的电脑上。我们就在C#.NET程序里面将此控件拖入到主窗口中,然后就能直接利用此控件的事件来捕捉PLC的命令了,感觉好神奇。然后,我对C++的态度有了极大的转变,以前只知道C++写窗口程序是多么麻烦啊(远不如C#.NET来得快和直接),而它的所谓“比较底层,和底层操作系统的关系比C#这些高级语言要密切很多”的好处一直都没有体会到,现在才知道,正是因为C++比较底层,比较基础,所以它可以开发出很多和语言无关的公用程序块,如dll动态链接库和COM组件,原则上,只要你的Windows的系统,用VC++开发出来的这些公用程序块就能被任何语言调用(如果不用MFC框架,而用ATL框架来编写,甚至还可以脱离Windwos系统,不仅仅实现跨语言,甚至跨平台调用,这个笔者就没有仔细研究了)。
本人大学本科所学本来是电子技术的工业自动化,结果中途做的几次项目都是“纯软件”,这次暑假的经历,终于让我在“硬件”和“软件”之前找到一个连接交汇点了。

以前做电子产品只是为了实现功能,现在发现这远远不够,按照目前的时代潮流,一个系统除了要功能完备化,还要信息化 ,信息化就涉及到数据采集、存储、分析和显示。当然如果你不是做系统的,那么你也不必去用全局的眼光去看待这个问题,但你做了电子产品后,却不能让它的功能仅仅局限于在现场完成一些自动控制,而应该开发出和设备相关的上层API,供广大的非电子的上层程序员进行二次开发,在PC上层平台上对数据信息进行更好的组织和处理。而提供的API最好是具有较好的移植性,以适应不同企业的不同语言的程序员。而COM组件技术很好地解决了这个问题。
说到跨语言的模块化程序设计,在本文之前发表的一篇《VC++的DLL应用(含Demo演示)》中讲了dll的创建方法,用户可以将一些公用函数放在dll源文件中,然后编译生成一个dll文件,供程序动态加载连接并调用里面的函数,这个也可以跨语言地进行调用。但dll有自己的局限性,就是没有事件,而这个时候ActiveX控件就隆重登场了,同样能够跨语言使用,ActiveX可以提供方法,属性甚至是事件(当然对比dll也有缺点,它不是单独的文件,无法动态加载和卸载)。
因为笔者现在只是学习这个技术并作为一个技术积累,而没有对这个技术进行原理上的深入研究,所以很多术语可能完全是错误的,希望高手看到后,不吝踢教和指正,也能防止本文误认“子弟”了。本文中,作者是把ActiveX,COM,OCX当作相同的概念来对待的,可能不妥,请见识,如果想细究其具体的区别,请参考文章:
《Activex、OLE、COM、OCX、DLL之间有什么区别?》
其实不管你是否了解它们之前的区别,都无所谓,因为本文只是讲解如何从零开始学习并应用这门技术来解决实际问题,大家只需要知道实现步骤就OK了。
好,多的话不说了,下面开始介绍ActiveX这门技术的实现方式。
正文:
ActiveX这门技术是通过生成“*.ocx”文件来实现的。先来了解下OCX文件,在百度百科上面对OCX是这样解释的:
“.ocx是ocx控件的扩展名,OCX 是对象类别扩充组件。如果你用过Visual Basic或者Delphi一类的可视化编程工具,那么对控件这个概念一定不会陌生,就是那些工具条上的小按钮,如EditBox,Grid,ImageBox,Timer等等。每个控件都有自己的事件、方法和属性。使用了控件的编程非常容易。首先,在程序的设计阶段可以设置一些属性,如大小,位置,标题(caption)等等;在程序运行阶段,可以更改这些属性,还可以针对不同的事件,调用不同的方法来实现对该控件的控制。控件就好像一块块的积木,程序要做的事只是将这些积木搭起来。控件的最大好处是可以重复使用,甚至可以在不同的编程语言之间使用,例如你可以在VB中嵌入用VC开发的控件。”
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-11759-1.html
宋茜全程似发脾气的女鬼
这坏坏的笑呢
领海的一切来犯之敌要痛击
中国不得已的反制之措施