Puntos de entrada de la interfaz COM
Para las funciones miembro de una interfaz COM, use la macro METHOD_PROLOGUE
para mantener el estado global adecuado al llamar a métodos de una interfaz exportada.
Normalmente, las funciones miembro de las interfaces implementadas por los objetos derivados de CCmdTarget
ya usan esta macro para proporcionar la inicialización automática del puntero pThis
. Por ejemplo:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Para obtener más información, consulte la nota técnica 38 sobre la implementación de MFC/OLE IUnknown
.
La macro METHOD_PROLOGUE
se define como:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
La parte de la macro relacionada con la administración del estado global es:
AFX_MANAGE_STATE( pThis->m_pModuleState )
En esta expresión, se supone que m_pModuleState es una variable miembro del objeto contenedor. Se implementa mediante la clase base CCmdTarget
y se inicializa en el valor adecuado por COleObjectFactory
, cuando se crea una instancia del objeto.