Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы Мартын 1(ComCorbaLab2004).doc
Скачиваний:
30
Добавлен:
10.02.2016
Размер:
1.81 Mб
Скачать

4.1.2 Что такое atl?

Физически ATL представляет собой набор заголовочных файлов (и нескольких cpp-файлов), инсталлированных в каталоге Atl\lnclude среды MS Visual Studio. Поскольку будут рассматриваться эти файлы, то в таблице 4.1 собрана информация о том, какого рода код можно найти в наборе файлов ATL (сгруппировано по функциональности).

Содержимое файлов ATL Таблица 4.1.

ATL-файл с исходным кодом

Содержание

<atlwin.h>

<altwin.cpp>

<atlhost. h>

Поддержка окон и диалогов. <atlhost.h> впервые включен в ATL 3.0, определяет поддержку для окон, содержащих элементы управления ActiveX

<atldb.h>

<atldbcli.h>

<atldbsch.h>

Поддержка OLE DB

<atlsnap.h>

Поддержка разработки ММС Snap In

<atlctl.h>

<atlctl.cpp>

Поддержка разработки элементов управления ActiveX

<atliface.idl>

<atliface.h>

IDL-код для определяемых в ATL интерфейсов СОМ и сгенерированный MIDL заголовочный файл

<altconv.h>

<atlconv.cpp>

Определяет функции преобразования типа и макросы для работы со строками в СОМ

<atldef.h>

Символы препроцессора (#defines)

<statreg.h>

<statreg.cpp>

Поддержка саморегистрации

<atlbase.h>

Базовый файл ATL, определяющий поддержку СОМ-серверов, «упаковочных» классов и отладки

<atlcom.h>

Поддержка IUnknown, автоматизации, перечислений и постоянства обьектов COM (persistence). Поддержка агрегации, объекты класса по умолчанию, макросы СОМ также определяются в <altcom.h>

<atlimpl.cpp>

Реализации различных классов ATL. Операторы размещения в "куче" (используются, если вы не связываетесь с С Run Time)

В большинстве случаев нужные файлы будут включены в проект, основываясь на конфигурации ATL COM AppWizard и типе кокласса, выбранного из ATL Object Wizard. Однако иногда придется включать файлы вручную, поскольку ATL предоставляет "минимальный полный" набор заголовочных файлов. Например, если разрабатывается основанный на GUI кокласс (такой как элемент управления ActiveX), то не получится доступ к поддержке Windows, содержащейся в файле <atlwin.h>, пока не будет включен этот файл в прекомпилированный заголовочный файл.

4.1.3 Разделение труда

Когда разработчик решает воспользоваться существующим кодом, предоставляемым библиотекой, первый вопрос, который нужно решить: где заканчивается поддержка библиотеки и начинается собственная работа. ATL — это компонентная библиотека, составленная из мастеров, шаблонов C++, классов и макросов. Библиотека предоставляет реализацию стандартных СОМ-интерфейсов, поддержку хранилищ для сервера и различные типы коклассов. Кроме того, кокласс может поддерживать некоторые функциональные возможности СОМ, такие как точки соединения, диагностика ошибок, потоковые модели и т. д.

4.1.4 Создание хранилища компонентов с помощью atl Com AppWizard

Мастер ATL COM AppWizard предлагает на выбор три конфигурации типа сервера, используемые для создания хранилища:

  • Dynamic Link Library (DLL). Мастер ATL COM AppWizard генерирует хранилище для COM DLL-сервера (внутрипроцессного). Все экспортируемые функции DLL полностью реализуются и предоставляются через ассоциированный DEF-файл.

  • Executable (EXE). Мастер ATL COM AppWizard генерирует хранилище для СОМ ЕХЕ-сервера. Предоставляется реализация WinMain().

  • Service (EXE). Мастер ATL COM AppWizard генерирует код хранилища для ЕХЕ-сервера, который может запускаться как сервис NT, локальный сервер или удаленный сервер.