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


Точки входа интерфейса 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