Udostępnij za pośrednictwem


Punkty wejścia interfejsu COM

W przypadku funkcji członkowskich interfejsu COM użyj makra METHOD_PROLOGUE , aby zachować prawidłowy stan globalny podczas wywoływania metod wyeksportowanego interfejsu.

Zazwyczaj funkcje składowe interfejsów implementowanych przez CCmdTargetobiekty pochodne używają już tego makra do automatycznego inicjowania pThis wskaźnika. Przykład:

STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
   METHOD_PROLOGUE(CMySink, Sinky);
   return pThis->InternalAddRef();
}

Aby uzyskać dodatkowe informacje, zobacz Technical Note 38 on MFC/OLE implementation (Uwaga techniczna 38 dotycząca implementacji MFC/OLE IUnknown ).

Makro METHOD_PROLOGUE jest definiowane jako:

#define METHOD_PROLOGUE(theClass, localClass) \
    theClass* pThis = \
    ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
    AFX_MANAGE_STATE(pThis->m_pModuleState) \

Część makra, której dotyczy zarządzanie stanem globalnym, to:

AFX_MANAGE_STATE( pThis->m_pModuleState )

W tym wyrażeniu przyjmuje się, że m_pModuleState jest zmienną składową obiektu zawierającego. Jest implementowany przez klasę CCmdTarget bazową i jest inicjowany do odpowiedniej wartości przez COleObjectFactory, gdy obiekt jest tworzone wystąpienie.

Zobacz też

Zarządzanie danymi stanu modułów MFC