COM インターフェイスのエントリ ポイント
COM インターフェイスのメンバー関数の場合は、適切なグローバル状態を維持するために METHOD_PROLOGUE マクロを実行エクスポートされたインターフェイスでメソッドを使用します。
通常、CCmdTargetによって実装されるインターフェイスのメンバー関数-派生オブジェクトが既に pThis ポインターの自動初期化を提供するには、このマクロを使用します。 たとえば、次のようになります。
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
詳細については、MFC/OLE IUnknown の実装の テクニカル ノート 38 を参照してください。
METHOD_PROLOGUE マクロは次のように定義されます。:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
グローバル状態の管理に関係するマクロの部分は次のとおりです。:
AFX_MANAGE_STATE( pThis->m_pModuleState )
この式には、m_pModuleState は コンテナー オブジェクトのメンバー変数と見なされます。 これは CCmdTarget の基本クラスによってオブジェクトがインスタンス化されると、実装され、適切な値に COleObjectFactoryによって初期化されます。