Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по программированию. Visual C++, MFC, VB, ActiveX


Служба Рассылок Subscribe.Ru

Visual C++. COM. Библиотека ATL. Уроки по программированию с сайта http://alexeev.nm.ru

Рассылка №20

Visual C++. COM. Библиотека ATL. Урок 1. Что такое ATL?
Visual C++. COM. Библиотека ATL. Урок 2. Постановка задачи и создание проекта.
Visual C++. COM. Библиотека ATL. Урок 3. Начинаем делать ActiveX.
Visual C++. COM. Библиотека ATL. Урок 4. Смотрим изменения в проекте.

Полные версии уроков (с картинками) можно найти по адресам
Урок 1. Что такое ATL?
Урок 2. Постановка задачи и создание проекта.
Урок 3. Начинаем делать ActiveX.
Урок 4. Смотрим изменения в проекте.

Visual C++. Технология COM и библиотека ATL. Урок 1. Что такое ATL?

ATL (расшифровывается как Active Template Library) - это библиотека для оздания COM-компонентов. С ее помощью вы можете делать ActiveX-компоненты разных видов - полные (Full), облегченные (Light) и др. Полные элементы предназначены для любого контейнера, а облегченные будут работать не во всяком контейнере. Но это не значит, что облегченные хуже - например у них будет меньший вес (в килобайтах), и это несомненный плюс. Кроме того, можно делать еще элементы ActiveX, которые являются составными (Composite), то есть включают в себя другие готовые элементы.

Еще с помощью библиотеки ATL можно делать COM-компоненты без пользовательского интерфейса. Они могут предоставлять различные услуги вашим программам - что-то там считать, пересылать и т. п. Также к компонентам без пользовательского интерфейса относятся компоненты для MTS (Microsoft Transaction Server). Их мы тоже обязательно рассмотрим.

Вобще-то компоненты ActiveX можно делать и на основе MFC. Но тогда для их работы на клиентском компьютере необходимо присутствие библиотек MFC, а они по объему достаточно большие. Так что различные COM-компоненты (и в частности элементы ActiveX) предпочтительно делать на основе ATL, а не на основе MFC. Хотя это и несколько сложнее.

Наверх

Visual C++. Технология COM и библиотека ATL. Урок 2. Постановка задачи и создание проекта.

Этот и несколько последующих уроков мы посвятим созданию ActiveX-элемента средствами библиотеки ATL. У нашего ActiveX-элемента будет свойство num типа short, метода inc, увеличивающий свойство num на 1 и событие Three, которое будет наступать, когда значение num будет равно 3. Все это выглядит не очень сложно, но нам важно, чтобы в нашем ActiveX присутствовало все - и свойства, и методы, и события.

Запустите Visual C++, нажмите Ctrl+N для выбора типа проекта и выберите тип Atl COM AppWizard.

Введите имя (не называйте только именем atl. Мы в нашем примере назвали проект atl1), нажмите на OK. Появится окно ATL COM AppWizard - Step 1 of 1. Убедитесь, что в данном окне выбрано Dynamic Link Library (DLL).

Далее нажимаем на Finish. Появится окно с информацией, в котором просто нажмите OK.

Сейчас мы имеем только оболочку для нашего элемента ActiveX, но самого его еще нет. Его добавлением мы займемся на следующем уроке.

Наверх

Visual C++. Технология COM и библиотека ATL. Урок 3. Начинаем делать ActiveX

В этом уроке мы добавим в наш проект заготовку для элемента ActiveX. Для этого проще всего нажать на кнопку New ATL Object на панели ATL (она там единственная).

(Если такая панель у вас не видна, то щелкните правой кнопкойй мыши на любой видимой панели и в контекстном меню выберите ATL). Появится окно ATL Object Wizard, в котором в левом списке выберите Controls, а в правом - Full Control.

Нажимаем на Next. Появится окно ATL Object Wizard Properties, в котором на вкладке Names в поле Short Name впечатайте имя (оно не должно совпадать с именем вашего проекта, в нашем же примере оно названо FirstATL). Остальные поля заполнятся автоматически (при желании все автоматические имена можно поменять, но обычно это не делается).

Перейдите на вкладку Attributes, в которой поставьте галочку Support Connection Points (остальные параметры трогать не надо, и их назначение мы рассмотрим в последующих уроках).

Эту галочку надо поставить, если вы хотите, чтобы ваш элемент ActiveX поддерживал события. У нас будет событие Three, так что мы эту галочку ставим. Третью вкладку пропускаем - там мы все равно ничего менять не будем и переходим на последнюю вкладку Stock Properties. Здесь перекиньте из левого списка в правый свойство Background Color (цвет фона).

Теперь наш ActiveX будет поддерживать стандартное свойство Background Color. Вообще же эта вкладка предназначена для задания всевозможных стандартных свойств для нашего элемента ActiveX (например таких, как цвет фона и шрифт).

С заданием свойств все! Нажимаем на OK и переходим к следующему уроку.

Наверх

Visual C++. Технология COM и библиотека ATL. Урок 4. Смотрим изменения в проекте

После добавления в наш проект заготовки для элемента ActiveX в нем появились дополнительные классы и интерфейсы. Прежде всего обратите внимание, то появился класс CFirstATL. Именно в этот класс мы и будем добавлять различные переменные и методы для нашего элемента ActiveX. Пока в нем находится только 2 метода - конструктор и OnDraw. Понятно, что метод OnDraw ответственен за рисование элемента. Еще в этом классе уже есть переменная m_clrBackColor. Она ответственна за цвет фона (помните, мы в уроке 3 добавили стандартное свойство для цвета фона?). И, наконец, в нашем классе присутствует еще и интерфейс IFirstATL. Пожалуйста не путайте его с другим интерфейсом, который тоже называется IFirstATL. Первый интерфейс IFirstATL - это интерфейс класса CFirstATL, второй находится вне класса. Когда в последующих уроках мы будем что-нибудь вставлять в один из этих интерфейсов, то не перепутайте их между собой и вставьте именно туда, куда надо. Обратите также внимание, что в отдельном интерфейсе IFirstATL (т. е. в том, который не в классе), уже есть два метода BackColor. Они служат для чтения и записи стандартного свойства BackColor, которое мы добавили в прошлом уроке. Вообще же этот интерфейс служит для задания свойств и методов для нашего элемента ActiveX.

И, наконец, в нашем проекте прибавился еще интерфейс _IFirstATLEvents.

Он служит для задания в нашем элементе ActiveX событий.

Наверх

Copyright Алексеев Игорь, 2001

Copyright cайт alexeev.nm.ru, 2001



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное