Справочник по технологии COM
Страница 64. ITypeLib::GetTypeComp


 

ITypeLib::GetTypeComp

Позволяет компилятору-клиенту выполнять компоновку с типами, переменными, константами и глобальными функциями.

HRESULT GetTypeComp
(
ITypeComp FAR* FAR*ppTComp
);

Параметр:
ррТСотр
Указывает на указатель на экземпляр ITypeComp для данной ITypeLib. Компилятор-клиент может использовать методы ITypeComp для компоновки с типами из ITypeLib, а также с определенными в этой библиотеке глобальными функциями, переменными и константами.

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возврата Значение
S_OK Успех.
E_OUTOFMEMORY He хватает памяти.
E_INVALIDARG Один или несколько аргументов неверны.
TYPE_E_IOERROR Функция не может выполнить запись в файл.
TYPE_E_INVDATAREAD Функция не может читать из файла.
TYPE_E_UNSUPFORMAT Библиотека типа имеет старый формат.
TYPE_E_INVALIDSTATE Не удается открыть библиотеку типа.
TYPE E WRONGTYPEKIND Несовпадение типов.

Комментарии:
Функция Bind возвращенного TypeComp выполняет компоновку с глобальными функциями, переменными, константами, значениями перечислимых типов и членами коклассов. Кроме того, функция Bind осуществляет компоновку с именами типов TKIND_MODULE, TKIND_ENUM и TKIND_COCLASS. Эти имена скрывают любые глобальные имена, определяемые информацией о типе. Компоновку с членами типов TKIND_ENUM, TKIND_MODULE и TKIND_COCLASS, помеченных как объекты Application, ITуреСоmр может выполнять непосредственно, без указания имени модуля.
ITypeComp::Bind и ITypeComp::BindType обрабатывают только неквалифицированные имена. ITypeLib::GetTypeComp возвращает указатель на интерфейс ITypeComp, который используется затем для компоновки с глобальными элементами библиотеки. Имена некоторых типов (TKIND_ENUM, TKIND_MODULE и TKIND_COCLASS) используют общее пространство имен с переменными, функциями, константами и элементами перечислений.
Если для недвусмысленного указания элемента его имя требует квалификации, то, чтобы выполнить компоновку с данным элементом для каждого квалификатора, следует последовательно вызывать GetTypeComp. Это обеспечивает доступ компиляторов к членам модулей, перечислений и компонентных классов, несмотря на то, что при компоновке нельзя задавать квалифицированное имя. 

 
Следующая статья »