Создание СОМ-компонентов средствами ATL. Создание нового СОМ-компонента

   
На этом шаге мы рассмотрим алгоритм создания компонента COM.

   
Завершив определение и конфигурирование DLL-файла, в котором будет находится Ваш СОМ-объект,
Вы можете перейти к созданию самого объекта. Для этого воспользуетесь мастером ATL Object Wizard.

  • Создание СОМ-компонента Encoder.
  • В меню Insert выберите команду New ATL Object.
  • В списке Category щелкните Objects.
  • В поле Objects щелкните значок Simple Object, как показано на рисунке 1, а затем - Next.
    Рис.1. Диалоговое окно ATL Object Wizard
  • В диалоговом окне ATL Object Wizard Properties выберите вкладку Names.
  • В поле Short Name введите имя класса сервера - Encoder. Все остальные поля изменятся
    автоматически в соответствии с содержанием поля Short Name. Это показано на рисунке 2.


    Рис.2. Диалоговое окно ATL Object Wizard Properties

       
    В левой части этого диалогового окна показано, что мастер создаст класс C++ по имени CEncoder
    (определенный в файлах Encoder.h и Encoder.cpp). Чтобы реализовать свой СОМ-компонент,
    придется поработать с кодом этого класса. В правой панели указано, что имя компонента - Encoder и что он
    по умолчанию предоставляет интерфейс IEncoder. Также обратите внимание на прграммный идентификатор
    (ProgID) EncodeServer.Encoder. По этому имени с помощью функции CLSIDFromProgID() Вы получите
    GUID объекта.

  • В диалоговом окне ATL Object Wizard Properties выберите вкладку Attributes и установите
    следующие атрибуты (как показано на рисунке 3):


    Рис.3. Вкладка Attributes диалогового окна ATL Object Wizard Properties

    • в Threading Model щелкните Single;
    • в Interface - Custom;
    • в Aggregation - No.

    ATL поддерживает рекомендуемую практику реализации диспетчерских интерфейсов в виде двойных
    интерфейсов. Выбрав специальный интерфейс, Вы откажетесь от реализации в своем СОМ-компоненте
    диспетчерского интерфейса. При этом методы интерфейса будут доступны только клиентам, способным обращаться
    vtable напрямую.

  • Убедитесь, что все флажки сброшены, и щелкните ОК, чтобы завершить создание объекта Encoder.
    В ClassView Вы увидите, что появился класс компонента СЕnсоdеr и интерфейс IEncoder, как
    показано на рисунке 4.


    Рис.4. ClassView, отображающий класс CEncoder и интерфейс IEncoder

   
Вместе с классом компонента CEncoder Вы получаете шаблонную фабрику классов, используемую для
создания Вашего СОМ-компонента. Этот класс также наследует реализацию по умолчанию методов
QueryInterface(), AddRef() и Release() интерфейса IUnknown,
которые управляют доступом клиента к указателям интерфейса и временем жизни Вашего СОМ-объекта.

   
Текст этого приложения можно взять здесь (16,7 Кб).

   
На следующем шаге мы рассмотрим добавление методов в интерфейс компонента.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий