|
COM 组件设计与应用(五)
用 ATL 写第一个组件
作者:杨老师
下载源代码 逆@风@者
一、前言
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 回介绍吧。
三、增加 ATL 对象类
步骤3.1:菜单 Insert\New ATL
Object...(或者用鼠标右键在 ClassView
卡片中弹出菜单)并选择Object 分类,选中 Simple Object
项目。见图二。

图二、选择建立简单COM对象
Category Object
普通组件。其中可以选择的组件对象类型很多,但本质上,就是让向导帮我们默认加上一些接口。比如我们选 "Simple Object",则向导给我们的组件加上
IUnknown 接口;我们选 "Internet Explorer Object",则向导除了加上
IUnknown 接口外,再增加一个给 IE 所使用的
IObjectWithSite 接口。当然了,我们完全可以手工增加任何接口。
Category Controls ActiveX
控件。其中可以选择的 ActiveX
类型也很多。我们在后续的专门介绍 ActiveX 编程中再讨论。
Category Miscellaneous
辅助杂类组件。
Categroy Data Access
数据库类组件(我最讨厌数据库编程了,所以我也不会)。
步骤3.2:增加自定义类 CFun(接口
IFun) ,见图三。
本文章更多内容:1 - 2 - 3 - 下一页>> |