自定义类实现连接点

本文介绍了COM中连接点的相关知识,连接点是组件与客户程序双向通信的手段,其实现也叫出接口的实现。详细阐述了组件方和客户端的实现步骤,组件方需创建ATL组件、定义出接口等,客户端要拷贝文件、创建派生类等,最终实现双向通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接点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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值