#if !defined(MedusaSINK_H__) #define MedusaSINK_H__ #include #include #include #include #include #include "MedusaServer_TLB.h" typedef void __fastcall (__closure * TMedusaSignReadyEvent)(BSTR Sign); // IDispatch-base(disinterface) ÇÑ ¼­¹ö °´Ã¼ÀÇ À̺¥Æ®¸¦ ´Ù·ê Ŭ·¡½º¸¦ »ý¼ºÇÑ´Ù. class TMedusaSink : public TEventDispatcher { protected : // À̺¥Æ® Çʵå. TMedusaSignReadyEvent FOnMedusaSignReady; // À̺¥Æ® Dispatcher. HRESULT InvokeEvent(DISPID id, TVariant* params) { if ((id == 1) && (FOnMedusaSignReady != NULL)) // OnMedusaSignReady { FOnMedusaSignReady(params[0]); } return S_OK; } // Reference to the event sender CComPtr m_pSender; public : __property TMedusaSignReadyEvent OnMedusaSignReady = { read = FOnMedusaSignReady , write = FOnMedusaSignReady }; public : TMedusaSink() : m_pSender(NULL), FOnMedusaSignReady(NULL) { } virtual ~TMedusaSink() { Disconnect(); } // Connect to the Server void Connect(IUnknown *pSender) { if (pSender != m_pSender) m_pSender = pSender; if (m_pSender != NULL) ConnectEvents(m_pSender); } // Disconnect from the Server void Disconnect() { if (m_pSender != NULL) { DisconnectEvents(m_pSender); m_pSender = NULL; } } }; #endif