Fundamentals of ATL COM Objects
На следующей иллюстрации показаны связи между классами и интерфейсы, используемые для идентификации com-объекта библиотеки ATL.
Примечание
На этой диаграмме показано, что CComObject является производным от CYourClass тогда как CComAggObject и CComPolyObject включают CYourClass в качестве переменной члена.
Существует три способа определения COM-объект библиотеки ATL. Стандартный параметр использовать класс CComObject, который является производным от CYourClass. Второй параметр создать объединенный объект с помощью класса CComAggObject. Третий параметр использовать класс CComPolyObject. CComPolyObject действует как гибридный. он может работать как класс CComObject или как класс CComAggObject в зависимости от того, как он впервые создается. Дополнительные сведения об использовании класса CComPolyObject см. в разделе CComPolyObject Class.
При использовании стандартного модели COM библиотеки ATL используется 2 объекта: внешний объект и внутренний объект. Внешние клиенты получают доступ к функциональности внутреннего объекта до функция-оболочки, определенные во внешнем объекте. Внешний объект типа CComObject.
При использовании объединенный объект, внешний объект не предоставляет программы-оболочки для получения функциональности внутреннего объекта. Вместо этого внешний объект содержит указатель, непосредственно обратиться к внешнему клиентами. В этом сценарии внешний объект типа CComAggObject. Внутренний объект переменную-член внешнего объекта и его типа CYourClass.
Поскольку клиент не должен пройти по внешнему объекту взаимодействовать с внутренним объектом, агрегированные объекты обычно является более эффективным. Кроме того, внешний объект не должен знать указанного функциональные возможности объединенного объекта, что интерфейс объединенного объекта непосредственно доступен клиенту. Однако не все объекты могут быть агрегированными. Для объекта для статистической обработки, для этого нужно конструированным с агрегатом.
Библиотеки ATL реализует IUnknown в 2 действия.
Средства CComObject, CComAggObject или CComPolyObject методы IUnknown.
CComObjectRoot или CComObjectRootEx управляют счетчик ссылок и внешний указатели IUnknown.
Другие аспекты своего COM-объект библиотеки ATL корректируются другими классами:
CComCoClass определяет модель фабрики классов и статистической обработки объекта по умолчанию.
IDispatchImpl предоставляет реализацию по умолчанию части IDispatch Interface всех повторяющихся интерфейсов объекта.
ISupportErrorInfoImpl реализует интерфейс ISupportErrorInfo который сведения об ошибках могут распространяться по цепочке вызовов правильно.
Содержание
Реализация CComObjectRootEx
Отображение записи сопоставления модели COM примере для реализации CComObjectRootEx.Реализация CComObject, CComAggObject и CComPolyObject
Обсуждается макросы DECLARE_*_AGGREGATABLE влияют на использование CComObject, CComAggObject и CComPolyObject.Поддержка IDispatch и IErrorInfo
Приводит список классов реализации библиотеки ATL для поддержки интерфейсов IDispatch и IErrorInfo.Поддержка IDispEventImpl
Рассматриваются шаги, чтобы реализовать точки подключения для класса.Изменить модель по умолчанию фабрики классов и агрегата
Показать, какие макросы, используемый для изменения по умолчанию используется фабрика класса и агрегат модель.Создание объединенный объект
Содержит инструкции по созданию объединенный объект.
Связанные разделы
Создание проекта библиотеки ATL
Содержит сведения о создании COM-объект библиотеки ATL.Библиотека ATL
Содержит ссылки на концептуальные разделы о том, как запрограммировать с помощью библиотека шаблонных классов ATL.
См. также
Другие ресурсы
Основные понятия активной библиотеки шаблонных классов (ATL)