ATL受信イベント非ActiveXコントロール

2258 ワード

IDispEventImplまたはIDispEventSimpleImplを使用するIDispEventSimpleImplでは、IDispEventImplのデータ構造を準備し、SINK_ENTRY_INFOはIDispEventImpl, lib, 。 SINK_ENTRY_EX -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#define LIBRARY_MAJOR   1
#define LIBRARY_MINOR   0

class CDriver : 
	public CComObjectRoot,
	public IDispEventImpl<0, CDriver, &__uuidof(_IMyTestEvents), &LIBID_ATL3Lib, LIBRARY_MAJOR, LIBRARY_MINOR> 
//	public IDispEventSimpleImpl<0, CDriver, &__uuidof(_IMyTestEvents)>
{
public:
	static _ATL_FUNC_INFO OnOKInfo;
	CDriver() {}

	BEGIN_COM_MAP(CDriver)
	END_COM_MAP()

	BEGIN_SINK_MAP(CDriver)
		SINK_ENTRY_EX(0, __uuidof(_IMyTestEvents), 1, On_OK)
//		SINK_ENTRY_INFO(0, __uuidof(_IMyTestEvents), 1, On_OK,&OnOKInfo)
	END_SINK_MAP()

	HRESULT __stdcall On_OK()
	{
		MessageBox(NULL,_T("On_OK"),_T("Sink"),MB_OK);
		return 0L;
	}

};

_ATL_FUNC_INFO CDriver::OnOKInfo    = {CC_STDCALL, VT_EMPTY, 0, { VT_BSTR }};

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
		::CoInitialize( NULL );		//         COM    ,          

		CComQIPtr  spFun;
		HRESULT hr = spFun.CoCreateInstance( __uuidof(MyTest));
		ATLASSERT( SUCCEEDED( hr ) );

		CComObject* ptrMathEvents;
		CComObject::CreateInstance( &ptrMathEvents );

		ptrMathEvents->DispEventAdvise(spFun,&__uuidof(_IMyTestEvents));

//		AtlAdvise(spFun, (IUnknown*)ptrMathEvents, DIID__IMyTestEvents, &m_dwEventCookie);

		spFun->Foo();
		
	//	spFun->Release();	//     !!!
		spFun.Release();	//   

		::CoUninitialize();

転載先:https://www.cnblogs.com/fanzi2009/archive/2010/05/07/1729517.html