dispinterface _QuoteEvents を持つ COM Quote クラスがあります。イベント処理には、次の手順を使用します。
IDispEventSimpleImpl から派生したイベント シンク クラス:
class CProxyQuoteEvents : public IDispEventSimpleImpl<SINK_ID, CProxyQuoteEvents, &__uuidof(_IQuoteEvents)> {
....
}
COM ライブラリの初期化とオブジェクトの作成とアドバイス:
CProxyQuoteEvents g_quoteEventsProxy;
QuotePtr g_quote;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
g_quote.CreateInstance(__uuidof(Quote));
g_quoteEventsProxy.DispEventAdvise(g_quote, &__uuidof(_IQuoteEvents));
これらの構造はすべてうまく機能します (イベントは期待どおりに処理されます) が、他のより高速な解決策があるかどうかを知りたいですか? ATL を回避した方が速い場合は、ATL がなくても実現できるのではないでしょうか。
また、違いがある場合は説明してください
class ATL_NO_VTABLE CSimple :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSimple, &CLSID_Simple>,
public IDispatchImpl<ISwitch, &IID_ISwitch, &LIBID_DISPEVENTLib>,
public IDispEventSimpleImpl</*nID =*/ 1, CSimple, &__uuidof(Word::ApplicationEvents)>
と
class CSimple :
public IDispEventSimpleImpl</*nID =*/ 1, CSimple, &__uuidof(Word::ApplicationEvents)>