ATL实现Connection Point的一种简单的方法

本文介绍了如何使用ATL来实现COM组件的Connection Point,通过创建一个COM对象并实现特定接口,然后在客户端通过连接点订阅事件,详细展示了代码实现过程,最终在VC++6.0中成功调试。

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

 

 

大家好!前几天刚到一家新公司,我参与的系统中是完全基于COM组件的开发,其中用到了大量的Connection Point方法,被逼无奈,只好抱一抱佛脚了,经过一段时间的学习,总算有了一些体会,来与大家分享一下,各位莫笑。

让我们用示例来说明:

COM服务器:

1.新建一个COM对象CA实现IA接口,利用向导来实现这一步。

2.添加IEvent接口的定义,并将它声明为COM对象A的外部接口(Outgoing Interface)

// 优快云.idl : IDL source for 优快云.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (优快云.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
 [
  object,
  uuid(2EE8F461-7200-4C13-A2FC-2552F8773089),
  dual,
  helpstring("IA Interface"),
  pointer_default(unique)
 ]
 interface IA : IDispatch
 {

 [id(1), helpstring("method Init")] HRESULT Init();
 
};

 [
  object,
  uuid(C5C88155-7CAB-4109-9610-234A6AD529DC),
  dual,
  helpstring("IEvent Interface"),
  pointer_default(unique)
 ]

 interface IEvent :  IUnknown
 {
  [id(1), helpstring("method OnDataChanged")] HRESULT OnDataChanged();
 };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值