Interface COM, points d'entrée
Pour les fonctions membres d’une interface COM, utilisez la METHOD_PROLOGUE
macro pour maintenir l’état global approprié lors de l’appel de méthodes d’une interface exportée.
En règle générale, les fonctions membres des interfaces implémentées par CCmdTarget
des objets dérivés utilisent déjà cette macro pour fournir l’initialisation automatique du pThis
pointeur. Par exemple :
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Pour plus d’informations, consultez la note technique 38 sur l’implémentation MFC/OLE IUnknown
.
La METHOD_PROLOGUE
macro est définie comme suit :
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
La partie de la macro concernée par la gestion de l’état global est la suivante :
AFX_MANAGE_STATE( pThis->m_pModuleState )
Dans cette expression, m_pModuleState est supposé être une variable membre de l’objet conteneur. Elle est implémentée par la CCmdTarget
classe de base et est initialisée à la valeur appropriée par COleObjectFactory
, lorsque l’objet est instancié.