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