Книги, научные публикации Pages:     | 1 |   ...   | 4 | 5 | 6 |

Основы 2-е издание, исправленное и переработанное Дейл Роджерсон Оглавление ОТ АВТОРА ...

-- [ Страница 6 ] --

Использовать и реализовывать перечислители легко. Самое сложное Ч не забыть вызывать AddRef и Release для всех перечисляемых указателей на интерфейсы. Если Вы реализуете метод Next, следует вызвать для указателей на интерфейсы AddRef, прежде чем возвращать их клиенту. Если же Вы используете метод Next, то необходимо вызывать для возвращенных им указателей Release.

Фиксируют ли перечислители мгновенное состояние, или они живые? Обычно фиксируют, как, например, IEnumConnections и IEnumConnectionPoints. Объект-перечислитель, который Вы получаете в результате вызова IConnectionPoint::EnumConnections, представляет собой мгновенный снимок текущих подключений к данной точке. Если набор подключений изменился (из-за того, что другой клиент вызвал Advise для добавления или Unadvise для удаления подключения), Ваш мгновенный снимок обновлен не будет.

Основа COM Ч стандартные интерфейсы Как я уже неоднократно повторял, СОМ основана на интерфейсах. Чем больше компонентов используют одни и те же интерфейсы, тем больше вероятность полиморфного использования компонентов. Многие интерфейсы уже определены СОМ, OLE, управляющими элементами ActiveX, документами ActiveX и Автоматизацией.

Разработчику компонента СОМ следует изучить эти уже существующие интерфейсы. Даже если Вы решите не использовать их в своем приложении, то многое узнаете о создании с их помощью гибких компонентных архитектур.

У-у-ф!

Итак, мы подошли к концу. Вы знаете, как создавать интерфейсы СОМ на С++, реализовывать IUnknown и IClassFactory и регистрировать свои компоненты в Реестре Windows. Вам также известно, как создавать приложения из компонентов, включающих и агрегирующих другие компоненты. Вы знаете, как упростить себе жизнь с помощью классов С++ и smart-указателей. Вы также умеете описывать свои интерфейсы в файлах IDL, чтобы автоматически генерировать библиотеки маршалинга и библиотеки типа. Реализация IDispatch Ч это простой процесс, состоящий в использовании ITypeInfo. Наконец, Вы мастерски умеете создавать компоненты, реализующие модель разделенных потоков.

Если Вы решите написать компонент СОМ, то, учитывая Ваши знания, единственным недостающим ингредиентом будут конкретные интерфейсы СОМ. Вы знаете, как реализовать интерфейс. Теперь Вам нужно либо разработать собственный интерфейс, либо найти стандартный и реализовать его. Microsoft уже разработаны сотни интерфейсов для технологий ActiveX, DirectX и OLE. Управляющий элемент ActiveX Ч это просто реализация набора интерфейсов. Документ ActiveX Ч также набор интерфейсов с их реализациями.

Управляющие элементы и документы ActiveX используют много общих стандартных интерфейсов.

Реализация интерфейсов ActiveX, DirectX и OLE Ч непростая задача. Однако все это, как говорится, детали реализации. Проблема заключается не в СОМ, ведь после этой книги Вы стали настоящим экспертом по СОМ.

(Пришлите мне свое имя и адрес на обороте стодолларовой купюры и получите бесплатный сертификат, подтверждающий Ваши знания.) Если Вы достаточно долго поиграете с примером Tangram, то станете и танграмным мастером. Наслаждайтесь!

Pages:     | 1 |   ...   | 4 | 5 | 6 |    Книги, научные публикации