Введение

Библиотека разработки под Windows Active Template Library (ATL) — это набор классов C++ на основе шаблонов, разработанный компанией Microsoft для упрощения программирования объектов Component Object Model (COM). Поддержка COM в Microsoft Visual C++ позволяет разработчикам создавать различные COM-объекты, серверы OLE Automation и элементы управления ActiveX. ATL включает в себя мастер объектов, который позволяет быстро настроить базовую структуру объектов, минимизируя объем ручного кодирования. На стороне клиента COM ATL предоставляет интеллектуальные указатели для управления подсчетом ссылок COM. В библиотеке широко используется шаблон "скрытое повторение".

История

Объекты COM также могут быть созданы с помощью Microsoft Foundation Classes (MFC), но это приводит к созданию более крупных исполняемых файлов, требующих DLL для поддержки. ATL, напротив, является более легковесной альтернативой в случаях, когда графический пользовательский интерфейс MFC не требуется. В 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, уязвимыми для удаленного выполнения кода. Начиная с Visual Studio 2013, код ATL в Visual C++ 2013 является статическим, что исключает необходимость в DLL.