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()

Confira também

Princípios básicos de objetos COM da ATL
Macros de mapa COM