Dela via


Startpunkter för COM-gränssnitt

För medlemsfunktioner i ett COM-gränssnitt använder du makrot METHOD_PROLOGUE för att upprätthålla rätt globalt tillstånd när du anropar metoder för ett exporterat gränssnitt.

Vanligtvis använder medlemsfunktioner i gränssnitt som implementeras av CCmdTarget-härledda objekt redan det här makrot för att ge automatisk initiering av pekaren pThis . Till exempel:

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

Mer information finns i Technical Note 38 om MFC/OLE-implementering IUnknown .

Makrot METHOD_PROLOGUE definieras som:

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

Den del av makrot som handlar om att hantera det globala tillståndet är:

AFX_MANAGE_STATE( pThis->m_pModuleState )

I det här uttrycket antas m_pModuleState vara en medlemsvariabel för det innehållande objektet. Den implementeras av basklassen CCmdTarget och initieras till lämpligt värde av COleObjectFactory, när objektet instansieras.

Se även

Hantera tillståndsdata för MFC-moduler