Einstiegspunkte für COM-Schnittstellen
Verwenden Sie für Memberfunktionen einer COM-Schnittstelle das METHOD_PROLOGUE
Makro, um den richtigen globalen Zustand beim Aufrufen von Methoden einer exportierten Schnittstelle zu Standard.
In der Regel verwenden Memberfunktionen von Schnittstellen, die von abgeleiteten CCmdTarget
Objekten implementiert werden, bereits dieses Makro, um die automatische Initialisierung des pThis
Zeigers bereitzustellen. Beispiel:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Weitere Informationen finden Sie in technischem Hinweis 38 zur MFC/OLE-Implementierung IUnknown
.
Das METHOD_PROLOGUE
Makro wird wie folgt definiert:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
Der Teil des Makros, der mit der Verwaltung des globalen Zustands befasst ist:
AFX_MANAGE_STATE( pThis->m_pModuleState )
In diesem Ausdruck wird davon ausgegangen, dass m_pModuleState eine Membervariable des enthaltenden Objekts ist. Sie wird von der CCmdTarget
Basisklasse implementiert und wird beim Instanziieren des Objekts auf den entsprechenden Wert COleObjectFactory
initialisiert.