Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Библиотека разработки под Windows Active Template Library (ATL) — это набор классов C++ на основе шаблонов, разработанный компанией Microsoft для упрощения программирования объектов Component Object Model (COM). Поддержка COM в Microsoft Visual C++ позволяет разработчикам создавать различные COM-объекты, серверы OLE Automation и элементы управления ActiveX. ATL включает в себя мастер объектов, который позволяет быстро настроить базовую структуру объектов, минимизируя объем ручного кодирования. На стороне клиента COM ATL предоставляет интеллектуальные указатели для управления подсчетом ссылок COM. В библиотеке широко используется шаблон "скрытое повторение".
Windows development library
The Active Template Library (ATL) is a set of template based C++ classes developed by Microsoft, intended to simplify the programming of Component Object Model (COM) objects. The COM support in Microsoft Visual C++ allows developers to create a variety of COM objects, OLE Automation servers, and ActiveX controls. ATL includes an object wizard that sets up primary structure of the objects quickly with a minimum of hand coding. On the COM client side ATL provides smart pointers that deal with COM reference counting. The library makes heavy use of the curiously recurring template pattern.
История
Объекты 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.
COM objects can also be created with Microsoft Foundation Classes (MFC), but this leads to larger binaries that require support DLLs. ATL, on the other hand, is a more lightweight alternative in situations where the graphical user interface parts of MFC are not required. In ATL version 7 (Visual Studio 2003), which directly succeeded version 3 (Visual Studio 6.0), a number of MFC classes like CString were made available in ATL, or more precisely moved to an ATLMFC common layer which is shared by both libraries. ATL version 7 also introduced attributes in C++ in an attempt to provide something similar to CLI attributes, however these have not been particularly successful, and have been deemphasized in ATL version 8 (Visual Studio 2005); the various wizards no longer generate them by default. Version 7 also introduced new string conversion classes. On July 28, 2009, Microsoft released a patch to ATL to fix a bug that could allow ActiveX controls created using ATL to be vulnerable to a remote code execution security flaw. Since Visual Studio 2013, ATL code in Visual C++ 2013 is static, eliminating the DLL.