Библиотека активных шаблонов - 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.

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

Рекомендации

  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 на свободе (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 Класс

внешняя ссылка