Создание компонента доступа к базе данных для 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.



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

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