若為 COM 介面的成員函式,請在呼叫匯出介面的方法時,使用 METHOD_PROLOGUE
巨集來維護適當的全域狀態。
通常,CCmdTarget
衍生物件所實作的介面函式已經使用此巨集來自動初始化 pThis
指標。 例如:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
如需詳細資訊,請參閱 MFC/OLE 實作IUnknown
。
如下是METHOD_PROLOGUE
巨集的定義:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
與管理全域狀態相關的巨集部分為:
AFX_MANAGE_STATE( pThis->m_pModuleState )
在此表達式中, m_pModuleState 假設為包含對象的成員變數。 由CCmdTarget
基類實作,並在物件具現化時由COleObjectFactory
初始化為適當的值。