Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 1.66 KB

com-interface-entry-points.md

File metadata and controls

35 lines (24 loc) · 1.66 KB
description title ms.date helpviewer_keywords ms.assetid
Learn more about: COM Interface Entry Points
COM Interface Entry Points
03/27/2019
entry points, COM interfaces
state management, OLE/COM interfaces
MFC COM, COM interface entry points
OLE, interface entry points
MFC, managing state data
COM interfaces, entry points
9e7421dc-0731-4748-9e1b-90acbaf26d77

COM Interface Entry Points

For member functions of a COM interface, use the METHOD_PROLOGUE macro to maintain the proper global state when calling methods of an exported interface.

Typically, member functions of interfaces implemented by CCmdTarget-derived objects already use this macro to provide automatic initialization of the pThis pointer. For example:

[!code-cppNVC_MFCConnectionPoints#5]

For additional information, see Technical Note 38 on MFC/OLE IUnknown implementation.

The METHOD_PROLOGUE macro is defined as:

#define METHOD_PROLOGUE(theClass, localClass) \
    theClass* pThis = \
    ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
    AFX_MANAGE_STATE(pThis->m_pModuleState) \

The portion of the macro concerned with managing the global state is:

AFX_MANAGE_STATE( pThis->m_pModuleState )

In this expression, m_pModuleState is assumed to be a member variable of the containing object. It is implemented by the CCmdTarget base class and is initialized to the appropriate value by COleObjectFactory, when the object is instantiated.

See also

Managing the State Data of MFC Modules