Библиотека активных шаблонов

Библиотека активных шаблонов
Разработчик(и)Майкрософт
Написано вС++
Операционная системаМайкрософт Виндоус
ТипБиблиотека или фреймворк
ЛицензияЗапатентованный
Библиотека разработки Windows

Библиотека активных шаблонов (ATL) — это набор классов C++ на основе шаблонов, разработанных корпорацией Microsoft , предназначенных для упрощения программирования объектов модели компонентных объектов (COM). Поддержка COM в Microsoft Visual C++ позволяет разработчикам создавать разнообразные объекты COM, серверы автоматизации OLE и элементы управления ActiveX . [1] [2] ATL включает в себя мастер объектов, который быстро настраивает первичную структуру объектов с минимальным ручным кодированием. На стороне клиента COM ATL предоставляет интеллектуальные указатели , которые работают с подсчетом ссылок COM. Библиотека активно использует странно повторяющийся шаблон шаблона .

История

Объекты COM также можно создавать с помощью Microsoft Foundation Classes (MFC), но это приводит к созданию более крупных двоичных файлов, требующих поддержки DLL . [3] ATL, с другой стороны, является более легкой альтернативой в ситуациях, когда графические части пользовательского интерфейса MFC не требуются. [4]

В ATL версии 7 (Visual Studio 2003), которая непосредственно последовала за версией 3 (Visual Studio 6.0), ряд классов MFC, таких как CString, стали доступны в ATL или, точнее, были перемещены в общий слой ATLMFC, который используется обеими библиотеками. ATL версии 7 также представила атрибуты в C++ в попытке предоставить что-то похожее на атрибуты CLI , однако они не были особенно успешными и были ослаблены в ATL версии 8 (Visual Studio 2005); различные мастера больше не генерируют их по умолчанию. Версия 7 также представила новые классы преобразования строк.

28 июля 2009 года Microsoft выпустила исправление для ATL, исправляющее ошибку, из-за которой элементы управления ActiveX , созданные с помощью ATL, могли стать уязвимыми к уязвимости безопасности удаленного выполнения кода. [5]

Начиная с Visual Studio 2013, код ATL в Visual C++ 2013 является статическим, что исключает необходимость в DLL. [6]

Классы поддержки

ATL включает в себя множество классов RAII для упрощения управления типами COM. Наиболее часто используемые классы включают:

  • CComPtr<T>[7] универсальный интеллектуальный указатель,
  • CComBSTR[8] Обертка BSTR,
  • CComVariant[9] Обертка ВАРИАНТ и
  • CComSafeArray<T>[10] Оболочка SAFEARRAY.

Поддержка COM компилятора

Хотя формально это не часть ATL, Microsoft Visual C++ также включает дополнительные классы C++ RAII для упрощения управления типами COM. Эти классы поддержки COM компилятора могут использоваться в качестве замены или в сочетании с ATL и включают:

  • _com_ptr_t[11] умный указатель, который украшает имя интерфейса COM суффиксом «Ptr»,
  • _bstr_t[12] Оболочка BSTR,
  • _variant_t[13] Обертка ВАРИАНТ и
  • _com_error[14] Оболочка HRESULT.

Обратите внимание, что начиная с Visual Studio 2012 классы поддержки COM компилятора не включают оболочку SAFEARRAY.

Смотрите также

Ссылки

  1. ^ Граймс, Ричард (1998). "ATL и COM". ATL COM (1-е изд.). Wrox Press. стр. 6. ISBN 1-86100-249-1.
  2. ^ Граймс, Ричард (1999). "Создание и вызов объекта COM с использованием ATL". Начало программирования ATL 3 COM (1-е изд.). Wrox Press. стр. 63. ISBN 978-1-86100-120-7.
  3. ^ Уильямс, Микки (2000). «Активные документы». Visual C++ 6 Unleashed (1-е изд.). Sams. стр. 733. ISBN 978-0-672-31241-0.
  4. ^ Microsoft MSDN: Рекомендации по выбору между ATL и MFC
  5. ^ "Обновление безопасности ATL". MSDN . Microsoft. 2009-07-28 . Получено 2011-09-19 .
  6. ^ Изменения и исправления ATL и MFC в Visual Studio 2013 http://blogs.msdn.com/b/vcblog/archive/2013/08/20/atl-and-mfc-changes-and-fixes-in-visual-studio-2013.aspx
  7. ^ Microsoft MSDN: Класс CComPtr
  8. ^ Microsoft MSDN: Класс CComBSTR
  9. ^ Microsoft MSDN: Класс CComVariant
  10. ^ Microsoft MSDN: Класс CComSafeArray
  11. ^ Microsoft MSDN: Класс _com_ptr_t
  12. ^ Microsoft MSDN: Класс _bstr_t
  13. ^ Microsoft MSDN: Класс _variant_t
  14. ^ Microsoft MSDN: Класс _com_error
  • Официальная справочная документация MSDN
Получено с "https://en.wikipedia.org/w/index.php?title=Active_Template_Library&oldid=1192817623"