WEB开发网
开发学院软件开发C++ VC++实现COM事件接收器 阅读

VC++实现COM事件接收器

 2008-03-08 21:56:27 来源:WEB开发网   
核心提示:1、给程序添加ATL支持,右键->New ATL Object2、实现IDispEventImpl 接口,VC++实现COM事件接收器,//EventSink.h#import "..\Server\Debug\Server.exe" raw_interface_only,no_namespa
1、给程序添加ATL支持。 右键->New ATL Object 2、实现IDispEventImpl 接口。 //EventSink.h #import "..\Server\Debug\Server.exe" raw_interface_only,no_namespace,named_guids class  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();

}

Tags:VC 实现 COM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接