纯C++类接收ATL连接点事件

本文介绍了如何在纯C++项目中利用ATL的连接点功能,简化了在C++中通常需要手动实现IDispatch接口的复杂过程。通过定义接收器模板类基类和具体实现类,以及提供测试代码,展示了在C++工程中方便地使用ATL连接点进行组件与客户端通信的方法。
摘要由CSDN通过智能技术生成

ATL中的连接点提供了组件与客户端相互通信的渠道,连接点在脚本语言中使用比较方便,但在C++中使用一般要自己实现IDispatch相关接口函数,使用起来很不方便,本文介绍在一般的C++工程中使用ATL,创建Sink的方式

一、定义接收器模板类基类

CppConnectionPointSink.h

 

#ifndef __CPP_CONNECTIONPOINT_SINK_H__
#define __CPP_CONNECTIONPOINT_SINK_H__

#include <atlbase.h>
#include <atlcom.h>

template<class T, class _TIEvent, UINT _ID>
class CCppConnectionPointSink :
	public IDispatchImpl<_TIEvent>,
	public CComObjectRoot,
	public IDispEventSimpleImpl<_ID, T, &__uuidof(_TIEvent)>
{
	BEGIN_COM_MAP(T)
		COM_INTERFACE_ENTRY(IDispatch)
		COM_INTERFACE_ENTRY(_TIEvent)
	END_COM_MAP()
};

#endif


二、实现接收器类

SinkAddResult.h

#pragma once

#include "CppConnectionPointSink.h"

extern _ATL_FUNC_INFO AddResultInfo;

class CSinkAddResult : public CCppConnectionPointSin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值