Библиотека активных шаблонов - Active Template Library
Разработчики) | Microsoft |
---|---|
Написано в | C ++ |
Операционная система | Майкрософт Виндоус |
Тип | Библиотека или же рамки |
Лицензия | Проприетарный |
В Библиотека активных шаблонов (ATL) - это набор шаблонных C ++ классы, разработанные Microsoft, предназначенный для упрощения программирования Компонентная объектная модель (COM) объекты. Поддержка COM в Microsoft Visual C ++ позволяет разработчикам создавать различные COM-объекты, OLE автоматизация серверы и ActiveX контроль.[1][2] ATL включает в себя мастер объектов, который быстро устанавливает первичную структуру объектов с минимумом ручного кодирования. На стороне клиента COM ATL предоставляет умные указатели которые имеют дело с подсчетом ссылок COM. Библиотека интенсивно использует любопытно повторяющийся шаблон шаблона.
История
COM-объекты также могут быть созданы с помощью Классы Microsoft Foundation (MFC), но это приводит к большим двоичным файлам, требующим поддержки DLL.[3] ATL, с другой стороны, является более легкой альтернативой в ситуациях, когда части графического пользовательского интерфейса MFC не требуются.[4]
В ATL версии 7 (Visual Studio 2003), которая непосредственно пришла на смену версии 3 (Visual Studio 6.0), ряд классов MFC, таких как CString, были доступны в ATL или, точнее, перемещены на общий уровень ATLMFC, который используется обеими библиотеками. ATL версии 7 также представил атрибуты в C ++ в попытке предоставить что-то похожее на Атрибуты интерфейса командной строки, однако они не были особенно успешными, и в 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
[7] универсальный смарт-указатель,CComBSTR
[8] Обертка BSTR,CComVariant
[9] VARIANT обертка иCComSafeArray
[10] Обертка SAFEARRAY.
Поддержка COM компилятора
Хотя формально Microsoft Visual C ++ не является частью ATL, он также включает дополнительные классы C ++ RAII для упрощения управления типами COM. Эти поддержка COM компилятора классы могут использоваться в качестве замены или в сочетании с ATL и включают:
_com_ptr_t
[11] умный указатель, который украшает имя COM-интерфейса суффиксом "Ptr",_bstr_t
[12] Обертка BSTR,_variant_t
[13] VARIANT обертка и_com_error
[14] Обертка HRESULT.
Обратите внимание, что начиная с Visual Studio 2012 классы поддержки COM компилятора не включают оболочку SAFEARRAY.
Смотрите также
- Сервер ATL
- C ++ / CX
- OLE автоматизация
- Стандартная библиотека шаблонов
- Библиотека шаблонов Windows
- Microsoft Windows SDK
- Список библиотек шаблонов C ++
Рекомендации
- ^ Граймс, Ричард (1998). «ATL и COM». ATL COM (1-е изд.). Wrox Press. п.6. ISBN 1-86100-249-1.
- ^ Граймс, Ричард (1999). «Создание и вызов COM-объекта с использованием ATL». Начало программирования ATL 3 COM (1-е изд.). Wrox Press. п.63. ISBN 978-1-86100-120-7.
- ^ Уильямс, Микки (2000). «Действующие документы». Visual C ++ 6 на свободе (1-е изд.). Sams. п. 733. ISBN 978-0-672-31241-0.
- ^ Microsoft MSDN: Рекомендации по выбору между ATL и MFC
- ^ «Обновление безопасности ATL». MSDN. Microsoft. 2009-07-28. Получено 2011-09-19.
- ^ Изменения и исправления 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
- ^ Microsoft MSDN: Класс CComPtr
- ^ Microsoft MSDN: Класс CComBSTR
- ^ Microsoft MSDN: Класс CComVariant
- ^ Microsoft MSDN: Класс CComSafeArray
- ^ Microsoft MSDN: _com_ptr_t Класс
- ^ Microsoft MSDN: _bstr_t Класс
- ^ Microsoft MSDN: _variant_t Класс
- ^ Microsoft MSDN: _com_error Класс