Compartilhar via


Pontos de entrada da interface COM

Para funções membro de uma interface COM, use a macro METHOD_PROLOGUE para manter o estado global adequado ao chamar métodos de uma interface exportada.

Normalmente, as funções membro de interfaces implementadas por objetos derivados de CCmdTarget já usam essa macro para fornecer inicialização automática do ponteiro pThis. Por exemplo:

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

Para obter informações adicionais, confira a Nota Técnica 38 sobre a implementação de IUnknown no MFC/OLE.

A macro METHOD_PROLOGUE é definida como:

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

A parte da macro relacionada ao gerenciamento do estado global é:

AFX_MANAGE_STATE( pThis->m_pModuleState )

Nessa expressão, m_pModuleState é considerado uma variável membro do objeto recipiente. Ele é implementado pela classe base CCmdTarget e é inicializado para o valor apropriado por COleObjectFactory, quando o objeto é instanciado.

Confira também

Gerenciando os dados de estado dos módulos MFC