首页 理论教育 使用ATL开发COM组件-VisualC++高级编程技术

使用ATL开发COM组件-VisualC++高级编程技术

时间:2023-11-16 理论教育 版权反馈
【摘要】:本小节使用ATL开发一个和上面开发的MFCCOM功能相同的进程内组件。图8-11使用ATL COM AppWizard开发进程内组件2. 添加组件对象类开发框架搭好了,接下来要创建新的ATL对象。使用这个向导对话框可以制作所有ATL支持的COM组件类。对象的聚合模型:COM使用两种重用模型,在ATL中可以指定是否使用聚合,如果指定使用聚合,那么当前开发的对象就可以重用其它的COM对象。程序清单8-17Output方法5. 构建组件现在可以使用Build命令进行编译连接,生成ATLCOM.DLL组件。

使用ATL开发COM组件-VisualC++高级编程技术

ATL是ActiveX Template Library(活动模板库)的缩写,它是利用C++的模板技术建立的一个库。使用ATL能够快速的开发出高效、简洁的代码,在网络迅速发展的今天,越来越多的开发者使用ATL进行组件的开发。

小节使用ATL开发一个和上面开发的MFCCOM功能相同的进程内组件。在开发过程中,只介绍一些基本点开发步骤和使用ATL的基础知识,不涉及更复杂的内容。

1. 创建一个ATL项目框架

使用ATL COM AppWizard类型建立一个项目,项目名为ATLCOM。在向导中选择组件服务器的类型是“Dynamic Link Library(DLL)”即建立进程内组件,其它选项使用缺省,如图8-11所示。然后Finish,向导就为我们建立了一个ATL项目的框架。

图8-11 使用ATL COM AppWizard开发进程内组件

2. 添加组件对象类

开发框架搭好了,接下来要创建新的ATL对象。选择菜单Insert->New ATL Object命令,出现ATL Object Wizard向导对话框。使用这个向导对话框可以制作所有ATL支持的COM组件类。这里选择组件类的Category为Objects,建立一个简单的组件Simple Object,如图8-12所示。

然后进入下一步,在属性对话框中设置新建的ATL组件对象的属性。属性设置对话框有两个页面,分别是对象名字标识设置页(Names)和对象基本属性设置页(Attributes)。在前者的页面中,输入待建C++对象(组件对象)的名字Charset,ATL向导将同步地根据用户的输入产生其它名字,如C++类名、头文件名和cpp文件名,COM对象在类型库中的CoClass名、主接口名和在注册表中的类型名等,参见图8-13。

图8-12 ATL Object Wizard向导对话框

图8-13 组件对象名字标识设置对话框

接着,设置组件对象的基本属性。进入Attributes属性页,如图8-14所示。这里我们使用缺省设置。点击确定,向导生成CCharset类和ICharset接口(显示在ClassView中)。

组件对象的属性设置是ATL对象创建过程中最关键的部分,对于我们所使用的这三个选项,这里作一个简单说明(未使用到的三个选项将在后面章节中介绍):

对象的线程模型(Thread Model):对象的线程模型是COM对象在多线程环境下被访问时对访问方式的控制,缺省情况下采用的是套间模型Apartment,由系统通过消息队列方式提供并发控制。

对象接口模型(Interface):COM对象可以使用双接口Dual和普通接口Custom。双接口是从Automation的接口IDispatch继承的,而普通接口是从IUnknown直接继承来的。

对象的聚合模型(Aggregation):COM使用两种重用模型,在ATL中可以指定是否使用聚合,如果指定使用聚合,那么当前开发的对象就可以重用其它的COM对象。

3. 为接口添加属性(www.xing528.com)

我们为ICharset接口添加一个Length属性:在ClassView的ICharset接口处点击鼠标右键,如图8-15所示,在弹出的菜单中选择Add Property,又弹出图8-16所示的对话框,在该对话框中添加Length属性,类型为long。

图8-14 组件对象基本属性设置对话框

图8-15 为接口添加属性的方法

图8-16 在Add Property to Interface对话框中为接口添加属性

下面要实现Length属性,首先为CCharset类添加一个私有成员变量m_length(类型为long),然后修改函数get_Lenght和put_Length:

4. 为接口添加方法

添加方法和添加属性过程差不多,右击ClassView中的ICharset,选择Add Method。添加Output方法,功能和以前一样,以字符串形式输出当前的属性Length值,如图8-17所示。

图8-17 为接口添加Output方法

然后编辑该方法,代码如程序清单8-17所示。

程序清单8-17 Output方法

5. 构建组件

现在可以使用Build命令进行编译连接,生成ATLCOM.DLL组件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈