Шаг 174.
Среда программирования Visual C++. Создание СОМ-компонентов средствами ATL. Добавление методов в интерфейс компонента

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

    Создав окружение, фабрику классов и методы интерфейса IUnknown (которые были добавлены автоматически), Вы можете приступать к созданию специальных методов, ради которых и генерировался компонент. Клиент будет вызывать эти методы, таким образом получая доступ к предоставляемым Вашим объектом услугам. Для добавления новых методов служит мастер Add Method to Interface Wizard.

    Задавая параметры с помощью Add Method to Interface Wizard, Вы должны указать их в формате IDL, который требует определения направления передачи данных в атрибутах. Задавая направление [in], Вы указываете, что первый параметр передает данные в метод. Параметр типа [in] передается по значению.

    Функция EncodeString() принимает [in]-параметр и создает строку, закодированную с помощью простого алгоритма. Указатель на эту строку будет передаваться клиенту в параметре [out].

    Обратите внимание на использование BSTR - строкового типа данных Automation. Применение поддерживаемых Automation типов для параметров методов интерфейса означает, что услуги Вашего компонента будут доступны в языках типа Microsoft Visual Basic или Microsoft Visual J++.

    Большинство методов СОМ-интерфейсов возвращают HRESULT - определенное в СОМ 32-разрядное значение, информирующее о неудаче или успехе вызова. Некоторые языки клиентов (например Visual Basic) не способны работать с данными типа HRESULT напрямую. Для таких случаев существует атрибут [retval] - он указывает на параметр, который будет использован для размещения возвращаемого значения. Система обработки ошибок времени выполнения в Visual Basic способна обработать HRESULT-значение, возвращенное функцией. Но если уж говорить о Visual Basic, то в этом языке результат функции EncodeString() - это значение, на которое ссылается параметр [retval]. Таким образом, следующий код Visual Basic, выведет в информационном окне зашифрованную форму сообщения "Неllo":

  Dim comobj  As Encoder
  Set comobj  = New Encoder
  MsgBox comobj.EncodeString('Hello")

    Щелкните OK, чтобы добавить метод EncodeString(). Пользуясь введенными Вами данными, мастер Add Method to Interface Wizard вставит соответствующую строку в IDL-файл Вашего проекта, а также добавит метод CEncoder в класс компонента.


Рис.1. Class Wiev с добавленным методом EncodeString()

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

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




Предыдущий шаг Содержание Следующий шаг