首页 > 学院 > 开发设计 > 正文

VC++实现COM事件接收器

2019-11-17 05:15:59
字体:
来源:转载
供稿:网友
1、给程序添加ATL支持。右键->New ATL Object2、实现IDispEventImpl 接口。//EventSink.h#import "../Server/Debug/Server.exe" raw_interface_only,no_namespace,named_guidsclass  CEventSink :

public IDispEventImpl<0, CEventSink,&DIID__IObjEvents,&LIBID_SERVERLib, 1, 0>

{

public:

CEventSink()

{

}

public:

BEGIN_SINK_MAP(CEventSink)

SINK_ENTRY_EX(0, DIID__IObjEvents, 1, cbFunc01)

END_SINK_MAP()

STDMETHOD(cbFunc01)();

};

//EventSink.cpp#include "stdafx.h"

#include "EventSink.h"STDMETHODIMP CEventSink::cbFunc01()

{

AfxMessageBox("called by Event from dll Server !");return S_OK;

}

3、连接对象// ClientDlg.cpp : implementation file

//

#include "EventSink.h"

void CClientDlg::OnButton1()

{

// TODO: Add your control notification handler code here

::CoInitialize(NULL);

{

IObjPtr pObj;

CEventSink *pEventSink= new CEventSink;

pObj.CreateInstance(__uuidof(Obj));

pEventSink->DispEventAdvise(pObj);

pObj->Func01();

pEventSink->DispEventUnadvise(pObj);

delete pEventSink;

}

::CoUninitialize();

}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表