活动模板库

活动模板库（Active Template Library (ATL)）是一個以C++模板技術的類的集合，是Microsoft為了簡化組件對象模型（COM）的程式設計而發佈的。 COM旨在允許開發者利用Visual C++創造各種各樣的元件，包括OLE Automation伺服器，與ActiveX控制項。 

Patterned after the Standard Template Library  (STL), ATL 包含一個物件精靈（object wizard），當設定好主要的物件結構後，能夠產生快速與較小的程式。

通过MFC可以提供互联网市场所需的控件，但是市场上还需要可以从网络上下载的轻量级控件。MFC程序通常较大而且需要支持DLL。  ATL允许创建不需要支持DLL的更小的控件，所以ATL是一种在COM控件环境下MFC的轻量级替代物。
头文件
afxwin.h
afximpl.h  实现了一套模板库，如CArray, CList, CMap等。因为在发布时STL尚未进入C++语言标准，因此ATL自行开发实现了一套。
 编译选项
ATL定义三个宏来来影响生成的COM服务器的优化。
_ATL_MIN_CRT             服务器不链接标准的C/C++运行库，并且ATL提供了函数malloc、realloc、new和delete的一个实现。不能调用任何其他的C/C++运行库的函数。_mainATL向导生成的ATL工程为所有的Release版本的定义了_ATL_MIN_CRT，但是没有为Debug版本定义这个符号宏。
_ATL_DLL                  服务器动态链接工具函数库atl.dll
_ATL_STATIC_REGISTRY    服务器静态链接对组件注册的支持

Debug配置没有定义上述三个符号宏。Release MinSize配置定义了_ATL_MIN_CRT和_ATL_DLL。Release MinDependency配置定义了_ATL_MIN_CRT和_ATL_STATIC_REGISTRY。

 相關條目 
 ATL Server
 Component Object Model (COM)
 Microsoft Foundation Classes (MFC)
 OLE Automation
 Standard Template Library (STL)
 Windows Template Library (WTL)
 Microsoft Platform SDK
历史
ATL版本3.0  (Visual Studio 6.0)
ATL版本7.0  (Visual Studio 2003)
ATL版本8.0  (Visual Studio 2005)

 支持类 
ATL包含了许多RAII类以简化对COM类型的管理。常用的有： 

 CComPtr<T>Microsoft MSDN: CComPtr Class 通用智能指针
 CComBSTRMicrosoft MSDN: CComBSTR Class  BSTR包装
 CComVariantMicrosoft MSDN: CComVariant Class  VARIANT包装
 CComSafeArray<T>Microsoft MSDN: CComSafeArray Class  SAFEARRAY包装

 编译器COM支持类 
虽然不是ATL的正式组成部分，Microsoft Visual C++包含额外的C++ RAII类以简化对COM类型的管理，可替代或配合ATL中对应的部分：

 _com_ptr_tMicrosoft MSDN: _com_ptr_t Class 装饰COM接口的智能执政，前缀以"Ptr"。
 _bstr_tMicrosoft MSDN: _bstr_t Class  BSTR包装器
 _variant_tMicrosoft MSDN: _variant_t Class  VARIANT包装器
 _com_errorMicrosoft MSDN: _com_error Class  HRESULT包装器
注意从Visual Studio 2012起，编译器COM支持类不再包含SAFEARRAY包装器。

 參考資料 

Category:C++类库
Category:Visual C++
Category:面向对象的程序设计