ATL除了是一个编写COM组件和ActiveX控件的方法之外,还是一个十分有用的Win32、COM应用程序工具库,ATL中很多类在普通应用程序中使用,可大大提高编写Win32应用程序的效率。
一、普通字符串(和MFC共享,但不需要MFC支持)
<code class="lang-text">CString 普通字符串(ANSI或Unicode字符集)
CStringA 普通字符串(ANSI字符集)
CStringW 普通字符串(Unicode字符集)</code>
二、图像加载和显示(和MFC共享,但不需要MFC支持)
<code class="lang-text">CImage 图像加载和显示(支持JPG、GIF和PNG)</code>
三、Win32系统服务类
<code class="lang-text">CAtlFile 文件操作
CAtlFileMapping 文件映射操作
CRegKey 注册表操作</code>
四、路径和URL分析
<code class="lang-text">CPath[A/W] 路径分析
CUrl URL分析</code>
五、Visual Basic 类型(应用于IDispatch接口)
<code class="lang-text">CComBSTR Visual Basic 计数式字符串(Unicode字符集)(注意:可能含有多个0)
CComVariant Visual Basic 可变类型
CComSafeArray<t> Visual Basic 数组
CComSafeArrayBound Visual Basic 数组边界
CAdapt<t> 将VB类型适配为标准C++类型(屏蔽&操作符,主要用于C++集合类)</t></t></code>
六、COM接口智能指针(具有自动QueryInterface/AddRef/Release等功能)
<code class="lang-text">CComPtr<t> 通用COM接口指针(现在的版本也实现了QueryInterface)
CComQIPtr<t> 通用COM接口指针(实现了QueryInterface的老版本,不能用于IUnknown和NULL)
CComGITPtr<t> 全局接口表(GIT)COM接口指针</t></t></t></code>
七、C++智能指针
<code class="lang-text">CAutoPtr<t> C++智能指针(new、delete运算符)
CAutoVectorPtr<t> C++数组智能指针(new[]、delete[]运算符)</t></t></code>
八、内存管理
<code class="lang-text">IAtlMemMgr 通用内存管理接口
CComHeap COM堆内存管理(CoTaskMemAlloc、CoTaskMemFree等)
CCRTHeap C堆内存管理(malloc、free等)
CLocalHeap Win32/Local内存管理(LocalAlloc、LocalFree等)
CGlobalHeap Win32/Global内存管理(GlobalAlloc、GlobalFree等)(效果和CLocalHeap完全相同)
CWin32Heap Win32/Heap内存管理(HeapAlloc、HeapFree等)</code>
九、Win32窗口类
<code class="lang-text">1.基类
CWindow Win32窗口句柄,以及相关WinAPI
CMessageMap 消息分发功能(必须实现ProcessWindowMessage函数或BEGIN_MSG_MAP)
2.窗口类
CWindowImpl<t[,tbase,traits]> 窗口实现类(由子类T继承使用)
CDialogImpl<t[,tbase]> 对话框实现类(由子类T继承使用)
CSimpleDialog<idd[,iscenter]> 简单对话框
CContainedWindow 被包含的窗口
CContainedWindowT<[tbase,traits]> 被包含的窗口(指定基类)
3.窗口风格类
CWinTraits<style,exstyle> 窗口风格缺省模板
CWinTraitsOR<style,exstyle,tbase> 窗口风格增量模板
CControlWinTraits 控件风格
CFrameWinTraits 框架窗口风格
CMDIChildWinTraits MDI子窗口风格</style,exstyle,tbase></style,exstyle></[tbase,traits]></idd[,iscenter]></t[,tbase]></t[,tbase,traits]></code>
十、ActiveX控件容器
<code class="lang-text">1.常用窗口类
CAxWindow ActiveX控件
CAxWindow2 带许可的ActiveX控件
CAxWindowT<[tbase]> ActiveX控件(指定基类)
CAxWindow2T<[tbase]> 带许可的ActiveX控件(指定基类)
CAxDialogImpl<t[,tbase]> 带有ActiveX控件的对话框(由子类T继承使用)
2.常用事件接收器
IDispEventImpl<id,t[,iid,...]> IDispatch事件接收器(由子类T继承使用,需定义BEGIN_SINK_MAP)
IDispEventSimpleImpl<id,t,iid> IDispatch事件接收器(不需要类型库)(由子类T继承使用,需定义BEGIN_SINK_MAP)
IPropertyNotifySinkCP<t[,cdv]> 属性更改事件接收器(由子类T继承使用,需定义OnChanged和OnRequestEdit)
3.ATL定义的常用接口
IAxWinHostWindow ActiveX控件宿主窗口
IAxWinHostWindowLic 带许可的ActiveX控件宿主窗口
IAxWinAmbientDispatch 宿主窗口的环境属性</t[,cdv]></id,t,iid></id,t[,iid,...]></t[,tbase]></[tbase]></[tbase]></code>
200字以内,仅用于支线交流,主线讨论请采用回复功能。