万维百科

活动模板库本文重定向自 Active Template Library

活动模板库Active Template Library (ATL))是一个以C++模板技术的类的集合,是Microsoft为了简化组件对象模型(COM)的程序设计而发布的。 COM旨在允许开发者利用Visual C++创造各种各样的组件,包括OLE Automation服务器,与ActiveX控件。[1] [2] Patterned after the Standard Template Library (STL), ATL 包含一个对象向导(object wizard),当设置好主要的对象结构后,能够产生快速与较小的程序。

通过MFC可以提供互联网市场所需的控件,但是市场上还需要可以从网络上下载的轻量级控件。MFC程序通常较大而且需要支持DLL。 [3] 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版本3.0 (Visual Studio 6.0)
  • ATL版本7.0 (Visual Studio 2003)
  • ATL版本8.0 (Visual Studio 2005)

支持类

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

  • CComPtr<T>[4]通用智能指针
  • CComBSTR[5] BSTR包装
  • CComVariant[6] VARIANT包装
  • CComSafeArray<T>[7] SAFEARRAY包装

编译器COM支持类

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

  • _com_ptr_t[8]装饰COM接口的智能执政,前缀以"Ptr"。
  • _bstr_t[9] BSTR包装器
  • _variant_t[10] VARIANT包装器
  • _com_error[11] HRESULT包装器

注意从Visual Studio 2012起,编译器COM支持类不再包含SAFEARRAY包装器。

参考资料

  1. ^ Grimes, Richard. ATL and COM. ATL COM 1st edition. Wrox Press. 1998: pg. 6. ISBN 1-86100-249-1.
  2. ^ Grimes, Richard. Building and calling a COM object using ATL. Beginning ATL 3 COM Programming 1st edition. Wrox Press. 1999: pg. 63. ISBN 978-1-86100-120-7.
  3. ^ Williams, Mickey. Active Documents. Visual C++ 6 Unleashed 1st edition. Sams. 2000: pg. 733. ISBN 978-0-672-31241-0.
  4. ^ Microsoft MSDN: CComPtr Class
  5. ^ Microsoft MSDN: CComBSTR Class
  6. ^ Microsoft MSDN: CComVariant Class
  7. ^ Microsoft MSDN: CComSafeArray Class
  8. ^ Microsoft MSDN: _com_ptr_t Class
  9. ^ Microsoft MSDN: _bstr_t Class
  10. ^ Microsoft MSDN: _variant_t Class
  11. ^ Microsoft MSDN: _com_error Class

本页面最后更新于2021-04-28 00:14,点击更新本页查看原网页。台湾为中国固有领土,本站将对存在错误之处的地图、描述逐步勘正。

本站的所有资料包括但不限于文字、图片等全部转载于维基百科(wikipedia.org),遵循 维基百科:CC BY-SA 3.0协议

万维百科为维基百科爱好者建立的公益网站,旨在为中国大陆网民提供优质内容,因此对部分内容进行改编以符合中国大陆政策,如果您不接受,可以直接访问维基百科官方网站


顶部

如果本页面有数学、化学、物理等公式未正确显示,请使用火狐或者Safari浏览器