Создание элементов управления в проекте ATL COM

   
На этом шаге мы рассмотрим алгоритм создания элемента управления средствами ATL.

   
Начиная с этого шага мы снова создадим элемент управления OneArmedBandit, но на этот раз с помощью
ATL. Это позволит сравнить два инструмента разработки - MFC и ATL - и оценить,
какая технология больше подходит в каждом конкретном случае.

   
Как всегда при работе с ATL, первым делом надо создать ATL-npoект, после чего с помощью
ATL Object Wizard мы добавим в него отдельные СОМ-объекты. Ниже мы создадим проект
библиотеки DLL, в которой будет находиться элемент управления, а затем вставим туда свой
ActiveX-элемент, созданный на основе ATL.

  • Создание проекта OneArmedBanditATL.
  • В меню File выберите команду New. На вкладке Projects щелкните ATL COM AppWizard.
  • В поле Project name введите название проекта OneArmedBanditATL и щелкните ОК.
  • Убедитесь, что в диалоговом окне ATL COM AppWizard выбран пункт Dynamic Link Library (DLL) и щелкните Finish.
  • Просмотрите диалоговое окно New Project Information и щелкните ОК.
  • Создание ActiveX-элемента ATLBandit.
  • В меню Insert выберите команду New ATL Object.
  • В списке Category выберите Controls. Откроется окно мастера ATL Object Wizard,
    как показано на рисунке 1.


    Рис.1. Выбор параметров элемента управления в ATL Object Wizard
    Мастер ATL Object Wizard предлагает несколько типов создаваемого элемента управления:

    • Full Control - полноценный элемент управления, который можно внедрять в любой контейнер, соответствующий
      спецификациям ActiveX;
    • Lite Control - "облегченный" вариант элемента управления, который работает в Internet Explorer,
      но не поддерживает интерфейсы, требуемые многими другими контейнерами;
    • Composite Control - элемент управления типа диалогового окна, который может содержать другие ActiveX-элементы;
    • HTML Control - элемент управления, использующий встроенный Web-браузер, который тоже является элементом
      управления, для отображения HTML-страниц.
  • В списке Objects выберите Full Control и щелкните Next.
  • Выберите вкладку Names. В поле Short Name введите ATLBandit.
  • На вкладке Attributes выберите пункт Support Connection Points.
  • На вкладке Stock Properties воспользуетесь кнопкой >, чтобы переместить свойства
    Background Color и Foreground Color из списка Not Supported в список Supported,
    как показано на рисунке 2.


    Рис.2. Выбор стандартных свойств в ATL Object

  • Щелкните ОК, чтобы завершить процесс создания проекта ActiveX-элемента управления ATLBandit.

   
В ClassView Вы увидите, что мастер создал интерфейс IATLBandit и класс реализации CATLBandit.
CATLBandit является производным от ATL-класса CComControl (впрочем, как и многие другие).


Рис.3. Содержимое ClassView

   
Откройте файл ATLBandit.h и найдите карту СОМ-объекта: класс CATLBandit поддерживает все
интерфейсы, требуемые ActiveX-контейнерам.

   
Сразу за СОМ-картой находится карта свойств:

BEGIN_PROP_MAP(CATLBandit)
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
	PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
	PROP_ENTRY("ForeColor", DISPID_FORECOLOR, CLSID_StockColorPage)
	// Example entries
	// PROP_ENTRY("Property Description", dispid, clsid)
	// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

   
Создавая карту свойств, ATL облегчает реализацию их постоянства. Как видите, в приведенном выше коде
строки стандартных свойств (включая размеры элемента управления) уже добавлены в карту свойств. Обратите внимание,
что макросы PROP_ENTRY позволяют ассоциировать страницу свойств со свойством и что страница стандартных
свойств, цветов ForeColor и BackColor уже определена.

   
Текст приложения можно взять здесь (20,1 Кб).

   
На следующем шаге мы рассмотрим добавление свойства.



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

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