Welcome

首页 / 软件开发 / VC.NET / COM组件设计与应用(五)——用ATL写第一个组件

COM组件设计与应用(五)——用ATL写第一个组件2009-12-24杨老师一、前言

1、如果你在使用 vc5.0 及以前的版本,请你升级为 vc6.0 或 vc.net 2003;

2、如果你在使用 vc6.0 (ATL 3.0)请阅读本回内容;

3、如果你在使用 vc.net(ATL 7.0)请阅读下回内容;(当然读读本文内容也不错)

4、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成两个数值的加法,Cat()完成两个字符串的连接。

5、下面......好好听讲! 开始了:-)

二、建立 ATL 工程

步骤2.1:建立一个工作区(WorkSpace)。

步骤2.2:在工作区中,建立一个 ATL 工程(Project)。示例程序叫 Simple1,并选择DLL方式,见图一。

图一、建立 ATL DLL 工程

Dynamic Link Library(DLL) 表示建立一个 DLL 的组件程序。

Executable(EXE) 表示建立一个 EXE 的组件程序。

Service(EXE) 表示建立一个服务程序,系统启动后就会加载并执行的程序。

Allow merging of proxy/stub code 选择该项表示把“代理/存根”代码合并到组件程序中,否则需要单独编译,单独注册代理存根程序。代理/存根,这个是什么概念?还记得我们在上回书中介绍的吗?当调用者调用进程外或远程组件功能的时候,其实是代理/存根负责数据交换的。关于代理/存根的具体变成和操作,以后再说啦......

Support MFC 除非有特殊的原因,我们写 ATL 程序,最好不要选择该项。你可能会说,如果没有MFC的支持,那CString怎么办呀?告诉你个秘密吧,一般人我都不告诉他,我后半辈子就靠着这个秘密活着了:

1、你会STL吗?可以用 STL 中的 string 代替;

2、自己写个 MyString 类,嘿嘿;

3、悄悄地、秘密地、不要告诉别人(特别是别告诉微软),把 MFC 中的 CString 源码拿过来用;

4、使用 CComBSTR 类,至少也能简化我们字符串操作;

5、直接用 API 操作字符串,反正我们大家学习 C 语言的时候,都是从这里干起的。(等于没说,呵呵)

Support MTS 支持事务处理,也就是是否支持 COM+ 功能。COM+ 也许在第 99 回介绍吧。