COM组件设计与应用之.NET中用ATL写组件2

来源:百度文库 编辑:神马文学网 时间:2024/07/08 13:37:49
支持 COM+ 1.0 支持事务处理的 COM+ 功能。COM+ 也许在第 99 回介绍吧。
三、添加 ATL 对象类
步骤3.1:菜单"项目\添加类..."(或者用鼠标右键在 项目中弹出菜单"添加\添加类...")并选择 ATL 简单对象。见图三。

图三、选择建立ATL简单对象
除了简单对象(只实现了 IUnknown 接口),还可以选择“ATL控件”(ActiveX,实现了10多个接口)......可以选择的组件对象类型很多,但本质上,就是让向导帮我们默认加上一些接口。在以后的文章中,陆续介绍吧。
步骤3.2:增加自定义类 CFun(接口 IFun) ,见图四。

图四、填写名称
其实,我们只需要输入简称,其它的项目会自动填写。没什么多说的,只请大家注意一下 ProgID 项,默认的 ProgID 构造方式为“项目名.简称名”。
步骤3.3:填写接口属性选项,见图五。

图五、接口选项
线程模型 COM 中的线程,我认为是最讨厌,最复杂的部分。COM 线程和公寓的概念,留待后续介绍。现在吗......大家都选"单元"(Apartment),它代表什么那?简单地说:当在线程中调用组件函数的时候,这些调用会排队进行。因此,这种模式下,我们可以暂时不用考虑同步的问题。(注1)
接口 双重(Dual),这个非常 非常重要,非常非常常用,但我们今天不讲(注2)。切记!切记!我们的这第一个 COM 程序中,一定要选择“自定义”!!!!(如果你选错了,请删除全部内容,重新来过。)
聚合 我们写的组件,将来是否允许被别人聚合(注3)使用。“只能创建为聚合”,有点类似 C++ 中的纯虚类,你要是总工程师,只负责设计但不亲自写代码的话,才选择它。
ISupportErrorInfo 是否支持丰富信息的错误处理接口。以后就讲。
连接点 是否支持连接点接口(事件、回调)。以后就讲。
IObje