|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
IDL-описаниеи библиотека типа
Помимо информации об интерфейсах, IDL-описание может содержать информацию о библиотеке типа. Библиотека типа определяет важные для клиента характеристики СОМ-объекта: имя его класса, поддерживаемые интерфейсы, имена и адреса элементов интерфейса. Рассмотрим пример приведенного ниже IDL-описания объекта для работы с файлами. Оно состоит из 3 частей. Первые две части описывают интерфейсы IРаботаСФайлами и IПреобразованиеФорматов, третья часть— библиотеку типа ФайлыБибл. По первым двум частям компилятор MIDL генерирует код посредников и заглушек, по третьей части — код библиотеки типа: -----------1-я часть [ object, uuid(E7CDODOO-1827-11CF-9946-444553540000) ] interface IРаботаСФайлами; IUnknown { import "unknown.idl" HRESULT ОткрытьФайл ([in] OLECHAR имя[31]); HRESULT ЗаписатьФайл ([in] OLECHAR имя[31]); HRESULT ЗакрытьФайл ([in] OLECHAR имя[31]); } ----------- 2-я часть [ object. uuid(5FBDD020-1863-11CF-9946-444553540000) ] interface IПреобразованиеФорматов: IUnknown { HRESULT ПреобразоватьФормат ([in] OLECHAR имя[31], [in] OLECHAR формат[31]); } ------------ 3-я часть [ uuid(B253E460-1826-11CF-9946-444553540000), version (1.0)] library ФайлыБибл { importlib ("stdole32.tlb"); [uuid(B2ECFAAO-1827-11CF-9946-444553540000) ] coclass СоФайлы { interface IРаботаСФайлами; interface IпреобразованиеФорматов; } } Описание библиотеки типа начинается с ее уникального имени (записывается после служебного слова uuid), затем указывается номер версии библиотеки. После служебного слова library записывается символьное имя библиотеки (ФайлыБибл). Далее в операторе importlib указывается файл со стандартными определениями IDL - stdole32.tlb. Тело описания библиотеки включает только один элемент — СОМ-класс (coclass), на основе которого создается СОМ-объект. В начале описания СОМ-класса приводится его уникальное имя (это и есть идентификатор класса — CLSID), затем символьное имя — СоФайлы. В теле класса перечислены имена поддерживаемых интерфейсов — РаботаСФайлами и IПреобразованиеФорматов. Как показано на рис. 13.24, доступ к библиотеке типа выполняется по стандартному интерфейсу ITypeLib, а доступ к отдельным элементам библиотеки — по интерфейсу ITypelnfo. Рис. 13.24. Доступ к библиотеке типа Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |