На этом шаге мы рассмотрим алгоритм создания компонента COM.
Завершив определение и конфигурирование DLL-файла, в котором будет находится Ваш СОМ-объект, Вы можете перейти к созданию самого объекта. Для этого воспользуетесь мастером ATL Object Wizard.
Рис.1. Диалоговое окно ATL Object Wizard
Рис.2. Диалоговое окно ATL Object Wizard Properties
В левой части этого диалогового окна показано, что мастер создаст класс C++ по имени CEncoder (определенный в файлах Encoder.h и Encoder.cpp). Чтобы реализовать свой СОМ-компонент, придется поработать с кодом этого класса. В правой панели указано, что имя компонента - Encoder и что он по умолчанию предоставляет интерфейс IEncoder. Также обратите внимание на прграммный идентификатор (ProgID) EncodeServer.Encoder. По этому имени с помощью функции CLSIDFromProgID() Вы получите GUID объекта.
Рис.3. Вкладка Attributes диалогового окна ATL Object Wizard Properties
Рис.4. ClassView, отображающий класс CEncoder и интерфейс IEncoder
Вместе с классом компонента CEncoder Вы получаете шаблонную фабрику классов, используемую для создания Вашего СОМ-компонента. Этот класс также наследует реализацию по умолчанию методов QueryInterface(), AddRef() и Release() интерфейса IUnknown, которые управляют доступом клиента к указателям интерфейса и временем жизни Вашего СОМ-объекта.
Текст этого приложения можно взять здесь (16,7 Кб).
На следующем шаге мы рассмотрим добавление методов в интерфейс компонента.