Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для функций-членов интерфейса COM используйте METHOD_PROLOGUE макрос для поддержания правильного глобального состояния при вызове методов экспортированного интерфейса.
Как правило, функции-члены интерфейсов, реализованных производными CCmdTargetобъектами, уже используют этот макрос для автоматической pThis инициализации указателя. Рассмотрим пример.
STDMETHODIMP_(ULONG) CMySink::XSinky::AddRef()
{
METHOD_PROLOGUE(CMySink, Sinky);
return pThis->InternalAddRef();
}
Дополнительные сведения см. в техническом примечании 38 о реализации 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при создании экземпляра объекта.