首页 / 软件开发 / C++ / 基于VC++中ATL创建ActiveX控件的探讨
基于VC++中ATL创建ActiveX控件的探讨2011-04-09任凤华 李兰引言ActiveX控件是微软公司提供的功能强大的程序设计和开发技术,是COM组件开发技术的重 要组成部分。它是OLE的第三个版本,对原先OLE控件的最大扩展是增加了Internet功能,它 不仅可以在支持OLE控件的容器中使用,更可以作为一个Internet控件,直接成为网页的一部 分。另外,ActiveX控件作为一种可重用的组件,相当于一个封装好的代码模块,它是通过其 方法、属性、事件来与应用程序进行通信的,此外,ActiveX控件是与开发语言无关的。用户 在使用控件时不必考虑它是VC还是用VB等其它语言开发的,应用程序都是通过COM与控件进行 通信的。可见,任何支持ActiveX控件的软件平台上都可以使用ActiveX控件,它使得不同厂 商所开发的控件可以真正地组装在一起,从而令软件的生产过程类似于硬件业的各个插件的 装配过程一样,实现了软件的工业化,大大降低了软件的开发成本,极大地提高了软件的生 产效率,实现了软件资源的共享。ATL技术1)ATLATL是ActiveX Template Library 的缩写,它是一套C++模板库。使用ATL能够快速地开发 出高效、简洁的代码(Effective and Slim code),同时对COM组件的开发提供最大限度的代 码自动生成以及可视化支持。从Microsoft Visual C++ 5.0版本开始,Microsoft把ATL集成 到Visual C++开发环境中。目前,ATL已经成为Microsoft标准开发工具中的一个重要成员, 日益受到C++开发人员的重视。在ATL产生以前,开发COM组件的方法主要有两种:一是使用COM SDK直接开发COM组件,另 一种方式是通过MFC提供的COM支持来实现。直接使用COM SDK开发COM组件是最基本也是最灵活的方式。但是,这种开发方式的难度和 工作量都很大,一方面,要求开发者对于COM的技术原理具有比较深入的了解,另一方面,直 接使用COM SDK要求开发人员自己去实现COM应用的每一个细节,完成大量的重复性工作。使用MFC提供的COM支持开发COM应用可以说在使用COM SDK基础上提高了自动化程度,缩短 了开发时间。MFC采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通 过继承这些类得到COM支持功能。但使用MFC开发的COM组件,尤其是ActiveX控件的开发,会 产生相当大的代码冗余,而且必须要依赖于MFC的运行时刻库才能正确地运行。ATL技术是目前开发COM组件的一种比较理想的技术。ATL中所使用的基本技术包括COM技术 、C++模板类技术(Template)以及C++多继承技术(Multi-Inheritance) 。2) ATL的基本使用使用ATL开发一个COM应用基本可以分为以下几个步骤:(1)创建一个新的ATL工程,并对工程的选项进行适当的配置。(2)向新创建的工程添加新的ATL类,并对该类进行一些初始配置工作。(3)根据COM应用的基本要求向新的ATL类加入新的接口定义,并实现相应的接口成员函数 。(4)编译连接工程,注册COM应用。利用ATL技术创建ActiveX控件 CircleCtl1) 创建ATL项目使用ATL COM AppWizard 创建ATL框架为该项目命名为Circle,按照向导提示向下做,采 用默认设置,即Server Type类型为Dynamic Link Library(DLL)。