Como implementar CComObjectRootEx
CComObjectRootEx é essencial. Todos os objetos ATL devem ter uma instância do CComObjectRootEx
ou CComObjectRoot na sua herança. CComObjectRootEx
fornece o mecanismo padrão QueryInterface
com base em entradas de mapa COM.
Por meio de seu mapa COM, interfaces de um objeto são expostas a um cliente quando o cliente consulta uma interface. A consulta é realizada pelo CComObjectRootEx::InternalQueryInterface
. InternalQueryInterface
somente lida com interfaces na tabela de mapa COM.
Você pode inserir interfaces na tabela de mapa COM com a macro COM_INTERFACE_ENTRY ou uma de suas variantes. Por exemplo, o código a seguir insere as interfaces IDispatch
, IBeeper
e ISupportErrorInfo
na tabela de mapa COM:
BEGIN_COM_MAP(CBeeper)
COM_INTERFACE_ENTRY(IBeeper)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_TEAR_OFF(IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP()