Реализация CComObjectRootEx

CComObjectRootEx важно — все объекты ATL должны иметь один экземпляр CComObjectRootEx или CComObjectRoot в их наследования. CComObjectRootEx обеспечивает механизм QueryInterface по умолчанию, основанные на COM записей карты.

Его сопоставлением COM интерфейсы объекта подвергаются клиента когда клиент запрашивает для интерфейса. Запрос выполняется через CComObjectRootEx::InternalQueryInterface. InternalQueryInterface обрабатывает только интерфейсы в таблице карта COM.

Интерфейсы можно ввести в таблицу карту COM с COM_INTERFACE_ENTRY макрос или один из его вариантов. Например, следующий код из образец BEEPER входит интерфейс IDispatch, IBeeperи ISupportErrorInfo в таблицу карта COM

BEGI&N_COM_MAP(CBeeper)
 nbsp; COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(IBeeper)
   COM_INTERFACE_ENTRY_TEAR_OFF (IID_ISupportErrorInfo, CBeeper2)
END_COM_MAP)

Index