Titik Entri Antarmuka COM
Untuk fungsi anggota antarmuka COM, gunakan METHOD_PROLOGUE
makro untuk mempertahankan status global yang tepat saat memanggil metode antarmuka yang diekspor.
Biasanya, fungsi anggota antarmuka yang diimplementasikan oleh CCmdTarget
objek -turunan sudah menggunakan makro ini untuk menyediakan inisialisasi pThis
otomatis pointer. Contohnya:
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Untuk informasi tambahan, lihat Catatan Teknis 38 tentang implementasi MFC/OLE IUnknown
.
METHOD_PROLOGUE
Makro didefinisikan sebagai:
#define METHOD_PROLOGUE(theClass, localClass) \
theClass* pThis = \
((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
Bagian dari makro yang berkaitan dengan pengelolaan status global adalah:
AFX_MANAGE_STATE( pThis->m_pModuleState )
Dalam ekspresi ini, m_pModuleState diasumsikan sebagai variabel anggota dari objek yang berisi. Ini diimplementasikan oleh CCmdTarget
kelas dasar dan diinisialisasi ke nilai yang sesuai dengan COleObjectFactory
, ketika objek dibuat.