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

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