Punti di ingresso all'interfaccia COM
Per le funzioni membro di un'interfaccia COM, utilizzare la METHOD_PROLOGUE
macro per mantenere lo stato globale appropriato quando si chiamano i metodi di un'interfaccia esportata.
In genere, le funzioni membro delle interfacce implementate dagli oggetti derivati da CCmdTarget
utilizzano già questa macro per fornire l'inizializzazione automatica del pThis
puntatore. Ad esempio:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Per altre informazioni, vedere La nota tecnica 38 sull'implementazione MFC/OLE IUnknown
.
La METHOD_PROLOGUE
macro è definita come:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
La parte della macro relativa alla gestione dello stato globale è:
AFX_MANAGE_STATE( pThis->m_pModuleState )
In questa espressione si presuppone che m_pModuleState sia una variabile membro dell'oggetto contenitore. Viene implementato dalla CCmdTarget
classe di base e viene inizializzato per il valore appropriato da COleObjectFactory
, quando viene creata un'istanza dell'oggetto .