Статья: Введение в ADO
атрибуты:
exclude - исключает генерируемого в заголовочных файлах кода определенные элементы или библиотеки типов
high_method_prefix - задает префикс, который будет ставится в начале имен методов и свойств верхнего уровня
high_property_prefixes - задает префикс для стандартных имен Get, Put и PutRef, который будет поставлен в начале имени метода при обращении к свойству.
implementation_only - запрещает создание основного заголовочного файла
include(…) - включает объявления других библиотек типов, определение которых встречаются в других системных файлах
inject_statement - помещает строку текста в начале объявления объявления пространства имен заголовочного файла для библиотеки типов.
named_guides - указывает компилятору определить и инициализировать переменные со старыми GUID
no_auto_exclude - запрещает автоматическое исключение определений элементов
no_implementation - запрещает генерацию файла .tli
no_namespace - Не используется пространство имен, спецификация которого находится в операторе library
raw_dispinterfaces - указывает компилятору генерировать все вызовы методов и свойств посредством функции Invoke и возвращать код ошибки HRESULT. Оболочки верхнего уровня не генерируются.
raw_interfaces_only - позволяет предоставить содержимое библиотеки типов только нижнего уровня, подавляя генерацию заготовок функций верхних уровней
raw_method_prefix - присоединяет к заданному имени префикс raw_, который обычно подключается к функциям-членам низкого уровня
raw_native_types - заставляет использовать типы данных нижнего уровня (вместо _bstr_t - BSTR, вместо _variant_t - VARIANT)
raw_property_prefixes - позволяет задать префикс нижнего уровня для методов-свойств put, get и putref
rename - переименовывает библиотеку типов и предотвратить повторное использование имен
rename_namespace - указывает пространство имен, содержащее информацию о библиотеке типов.Итак, после нудных разъяснений по директиве #import, рассмотрим, каким образом ее (директиву) можно использовать для включения интерфейсов ADO в наше приложение.
Пропишем в файл stdafx.h (например) пресловутую директиву следующим образом:
#import "c:Program FilesCommon FilesSystemADOmsado15.dll"
no_namespace rename("EOF","ADOEOF")
В данном случае создаются классы из библиотеки типов msado15.dll, реализующей объекты ADO и поставляемой в рамках OLE DB SDK.
В параметре rename приходится переименовывать ADO константу EOF, так как она уже используется в заголовочных файлах stdio.h, ios.h, stream.h, включенных в afxwin.h.
4. Инициализация COM.
Здесь все просто:
перед работой с объектами ADO необходимо инициализировать среду COM. Делается это посредством вызова API функции
HRESULT CoInitialize(LPVOID pvReserved );
где
pvReserved пареметр, равный NULL .
Для выгрузки COM применяется функция