Шаг 183.
Среда программирования Visual C++.
Создание компонента доступа к базе данных для STUpload
На этом шаге мы рассмотрим создание компонента для приложения STUpload.
На этом шаге мы вернемся к проекту STUpload и создадим СОМ-сервер
STLoadData.dll, встраиваемый в процесс и содержащий компонент UploadStockData. Этот компонент
предоставит интерфейс IUploadStockData с тремя методами:
ConnectToDatabase(), Disconnect() и UploadRecord().
Начнем с создания проекта STLoadData в рабочей области STUpload.
- Создание проекта STLoadData.
- Откройте рабочую область STUpload. В меню File выберите New.
- В диалоговом окне New щелкните вкладку Projects. Укажите категорию проекта ATL COM AppWizard.
- В поле Project name введите STLoadData. Выберите пункт Add to current workspace и щелкните ОК.
Рис.1. Создание нового проекта
- Чтобы завершить создание нового проекта, в окне 1 мастера ATL COM AppWizard щелкните Finish, а затем - ОК.
- В ClassView появится проект STLoadData. Его имя, выделенное жирным начертанием, показывает, что именно он является
активным. Убедитесь, что открыта полная, а не сокращенная панель инструментов Build. Она позволяет легко
переключаться между проектами, выбирая их из раскрывающегося списка.
Рис.2. Полная панель Build
- Щелкните правой кнопкой мыши проект STLoadData в ClassView. В открывшемся контекстном меню выберите New ATL Object.
Рис.3. Выбор New ATL Object
- В диалоговом окне ATL Object Wizard в списке Category щелкните пункт Objects. В поле
Objects щелкните значок Simple Object, а затем - Next.
Рис.4. Выбор Simple Object
- В диалоговом окне ATL Object Wizard Properties перейдите на вкладку Names. В поле
Short Name введите UploadStockData.
Рис.5. Вкладка Names
- На странице Attributes установите следующие атрибуты:
- в Threading Model выберите Apartment;
- в Interface - Dual;
- в Aggregation - No.
Рис.6. Вкладка Attributes
- Убедитесь, что все флажки сброшены, и щелкните ОК, чтобы завершить создание объекта UploadStockData.
- Создание методов интерфейса IUploadStockData.
- В ClassView раскройте узел STLoadData classes. Щелкните правой кнопкой мыши интерфейс IUploadStockData.
- В контекстном меню выберите пункт Add Method.
Рис.7. Добавление метода
- В поле Return Type щелкните HRESULT.
- В поле Method Name введите UploadRecord.
- В поле Parameters введите следующий код:
[in] BSTR fund, [in] DATE date, [in] double price,
[in] BSTR uplBy, [in] DATE uplDate
Рис.8. Добавление метода UploadRecord
- Повторите такую же последовательность операций, чтобы добавить методы со следующими сигнатурами (но поле Parameters оставьте пустым):
HRESULT ConnectToDatabase()
и
HRESULT Disconnect()
Эти методы мы реализуем позже, потому что они сами являются клиентами других СОМ-компонентов (библиотеки ADO).
Посмотрите на файл STLoadData.idl и обратите особое внимание на определение интерфейса:
[
object,
uuid(DF5923AB-EED0-4358-9889-291C8AF172FE),
dual,
helpstring("IUploadStockData Interface"),
pointer_default(unique)
]
interface IUploadStockData : IDispatch
{
[id(1), helpstring("method UploadRecord")] HRESULT UploadRecord([in]
BSTR fund, [in] DATE date, [in] double price,
[in] BSTR uplBy, [in] DATE uplDate);
[id(2), helpstring("method ConnectToDatabase")] HRESULT ConnectToDatabase();
[id(3), helpstring("method Disconnect")] HRESULT Disconnect();
};
Текст измененного приложения можно взять
здесь (140,0 Кб).
Обратите внимание, как интерфейс IUploadStockData наследует интерфейсу IDispatch. Именно так в
ATL реализуется двойной интерфейс. Клиенты, созданные на языках сценариев, смогут обращаться к
компоненту UploadStockData через диспетчерский интерфейс, а клиенты Visual C++ и
Visual Basic - напрямую через таблицу vtable.
Со следующего шага мы начнем знакомиться с клиентами COM.
Предыдущий шаг
Содержание
Следующий шаг