Разработчик(и) | Майкрософт |
---|---|
Написано в | С++ |
Операционная система | Майкрософт Виндоус |
Тип | Библиотека или фреймворк |
Лицензия | Запатентованный |
Библиотека активных шаблонов (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.Хотя формально это не часть 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.