Puntos de entrada de interfaz COM
Para las funciones miembro de interfaz COM, utilice la macro de METHOD_PROLOGUE para mantener el estado global adecuada al llamar a métodos de una interfaz exportada.
Normalmente, las funciones miembro de las interfaces implementadas por CCmdTarget- objetos derivados utilizan ya esta macro para proporcionar inicialización automática de puntero de pThis .Por ejemplo:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Para obtener más información, vea nota técnica 38 en la implementación de MFC/OLE IUnknown .
La macro de 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 ocuparse de administrar el estado global es:
AFX_MANAGE_STATE( pThis->m_pModuleState )
En esta expresión, el m_pModuleState se supone que una variable miembro del objeto contenedor.Se implementa mediante la clase base de CCmdTarget y inicializado el valor adecuado para COleObjectFactory, cuando se crean instancias del objeto.