Приложения-клиенты СОМ. Директива #import

   
На этом шаге мы рассмотрим особенности использования директивы #import.

   
Директива препроцессора #import позволяет на основе данных библиотеки типов сформировать заголовочные
файлы объектов и их интерфейсов в формате C++. Это очень удобно, когда у Вас нет доступа к файлам,
созданным MIDL-компилятором, - библиотека типов доступна практически всегда, ведь она обычно
компонуется вместе с СОМ-сервером в один DLL- или ЕХЕ-файл. Кроме того,
директива #import формирует ряд "интеллектуальных" указателей на интерфейсы СОМ-объектов.

   
Когда Вы применяете #import, препроцессор компилятора Visual Studio создает два заголовочных
файла, в которые помещается реконструированное содержание библиотеки типов в формате исходного текста на C++.
Главный заголовочный файл похож на сгенерированный MIDL-компилятором в том смысле, что также объявляет
функции C++, используемые для вызова методов интерфейса СОМ-объекта. Однако в нем есть и
дополнительные функции, которые скрывают методы интерфейса для предоставления свойств и методов в формате,
ожидаемом написанными на Visual Basic клиентами. К свойствам можно обращаться как к переменным-членам
класса, а методы скрыты так, чтобы параметр [out, retval] передавался в качестве возвращаемого значения.
Переменная типа HRESULT перехватывается, и если она сообщает об ошибке, то возбуждается исключение
_com_error. При необходимости классы _bstr_t и _variant_t применяются в качестве типов
параметров и возвращаемых значений функций-оболочек.

   
Главный заголовочный файл имеет то же имя, что и библиотека типов или DLL, а его расширение - *.tlh.
Вспомогательный заголовочный файл получает имя библиотеки типов и расширение *.tli. Он содержит реализацию
созданных компилятором функций-оболочек и включен директивой #include в главный файл.

   
Оба заголовочных файла помещаются в выходную папку. Они считываются и используются компилятором так же, как
если бы они подключались директивой #include.

   
Главный заголовочный файл библиотеки типов содержит объявления "интеллектуальных" указателей на интерфейсы,
предоставляемые СОМ-объектом. Макрос _COM_SMARTPTR_TYPEDEF служит для создания на
основе шаблона _com_ptr_t всех интерфейсов, определенных в библиотеке типов. Файл comdef.h с
определениями класов поддержки компилятора включен в TLH-файл.

   
На следующем шаге мы рассмотрим пример использования этой директивы.



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

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