Поделиться через


Точки входа интерфейса COM

Для функций-членов интерфейса COM используйте METHOD_PROLOGUE макрос для поддержания правильного глобального состояния при вызове методов экспортированного интерфейса.

Как правило, функции-члены интерфейсов, реализованных производными CCmdTargetобъектами, уже используют этот макрос для автоматической pThis инициализации указателя. Например:

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

Дополнительные сведения см . в техническом примечание 38 для реализации MFC/OLE IUnknown .

Макрос 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при создании экземпляра объекта.

См. также

Управление данными состояния модулей MFC