自定义类实现连接点

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

连接点in COM

----------------------------------------------------------

1.连接点是COM中用来使组件与客户程序进行双向通信的手段.

2.连接点的实现在COM中也叫出接口的实现

3.出接口在组件中定义,但是在客户程序中实现,具体是在客户程序中

定义一个类,这个类从组件的出接口派生.

连接点实现:

组件方:

1.照常规创建ATL组件,插入简单ATL对象,注意选中"Support Connection Points"

2.按上面步骤生成了"_IXXXEvents"接口,实际上就是我们要定义的出接口

3.在出接口中添加方法

4.在入接口中添加方法

5.修改.idl文件

<1>dispinterface _IXXXEvents改成interface _IXXXEvents : IUnknown

<2>去掉properties: 和methods:修饰符

<3>[default, source] dispinterface _IXXXEvents该成[default, source] interface _IXXXEvents

6.Build一下,产生需要的类型定义

7.右键单击组件类(CXXX),选择"Implement Connection Point..",选中"_IXXXEvents",OK

8.这时会产生一个代理类CProxy_IXXXEvets,并且还有一个Fire_yourmethod...,

这样,你就可以在组件中的入接口方法中调用该fire方法(就好象调用客户程序的方法样),实际上该方法封装了出接口

中定义的方法

客户端:

1.拷贝serverProjectName.h 和 serverProjectName.tlb 文件到你的客户EXE项目文件夹下,并且在类头文件中添加

#include "组件名.h"

#import "组件名.tlb" named_guids raw_interfaces_only

2.创建一个类,从 _IXXXEvents派生

3.实现下例方法

<1>HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void** ppvObject)

<2>ULONG STDMETHODCALLTYPE AddRef()

<3>ULONG STDMETHODCALLTYPE Release()

<4>最后实现出接口中定义的方法

4.照常规创建COM对象,调用接口(入接口)方法

其实,出接口方法何时调用是在组件里设计的.

好了,上面就是连接点的实现,这样就可以在组件与客户程序间实现双向通信了,

如有不足地方,请指正

--------------------------------------------------------------------------------------------

vigor

2004.11.4

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航