• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2026-03-22 14:38 Aet 隐藏边栏 |   抢沙发  1 
文章评分 1 次,平均分 5.0

概述

ATL

  1. ATL 本来是为了写 COM 组件(ActiveXOLE)而生的,顺带提供了最基础的窗口能力

WTL

  1. WTL 是微软的一个团队后来单独发布的头文件库,专门填充 ATLUI 方向的空白

关系

  1. wtl是工具箱,不是框架

ATL

概述

  1. 下面这些文件,WTL 依赖这些文件,但不包含它们
  2. 安装 Visual Studio 时它们就已经在了

位置

atlbase

  1. ATL 核心
    1. CComPtr
    2. CAtlModule
    3. COM 基础

atlwin

  1. ATL 窗口基类
    1. CWindow
    2. CWindowImpl
    3. BEGIN_MSG_MAP

atlstr

  1. ATL 字符串
    1. CAtlString

atlcom

  1. COM 接口实现辅助

atlctl

  1. ATL ActiveX 控件支持

atlsync

  1. ATL 线程同步
    1. CMutex
    2. CEvent
    3. CCriticalSection

atltypes

  1. ATL 几何类型
    1. CPoint
    2. CSize
    3. CRectATL版本)

WTL

下载

  1. wtl

模块划分

  1. 核心模块
    1. atlapp.h
    2. atlcrack.h
    3. atlmisc.h
    4. atlres.h
  2. 窗口、控件
    1. atlframe.h
    2. atldlgs.h
    3. atlctrls.h
    4. atlgdi.h
    5. atlscrl.h
    6. atlsplit.h
  3. 扩展功能
    1. atlddx.h
    2. atlctrlw.h
    3. atlctrlx.h
    4. atltheme.h
    5. atldwm.h
    6. atlfind.h
  4. 工具
    1. atlprint.h
    2. atlribbon.h
    3. atluser.h
    4. atlwinx.h

atlapp

  1. CAppModule
    1. WTL 应用的全局模块,替代 ATLCAtlExeModuleT,管理消息循环线程映射
  2. CMessageLoop
    1. 消息泵主体,内部是 GetMessage/TranslateMessage/DispatchMessage 循环
  3. CMessageFilter
    1. 接口,在消息进入分发前拦截(实现快捷键、Tab 焦点等)
  4. CIdleHandler
    1. 接口,消息队列为空时回调(适合后台任务、动画帧驱动)

atlcrack

  1. 提供 MSG_WM_ 系列宏,替代 MESSAGE_HANDLER,自动把 WPARAM/LPARAM 裂解成有意义的参数
    1. 例:MSG_WM_SIZE(OnSize) → OnSize(UINT type, CSize size) 直接拿到尺寸,不需要手写 LOWORD(lParam)
  2. 覆盖所有 WM_* 消息,是写消息处理函数最省力的方式

atlmisc

  1. CString WTL 版轻量字符串(不依赖 MFC),支持格式化、查找、替换
  2. CRect/CPoint/CSize 几何类(WTL 版,比 ATL 版多一些便利方法)
  3. CRecentDocumentList 最近文件列表,自动管理注册表存储
  4. RunTimeHelper 运行时 Windows 版本检测工具函数

atlres

  1. 定义 WTL 内部使用的标准资源 ID 常量
  2. ID_FILE_NEW / ID_FILE_OPEN / ID_FILE_SAVE 等菜单命令 ID
  3. ATL_IDS_* 标准字符串资源 ID(状态栏提示等)
  4. 你的项目只要用 WTL 的框架窗口,就必须包含这个文件

atlframe

  1. CFrameWindowImpl<T> 应用主窗口基类,内置工具栏/状态栏停靠区域管理和客户区自动填充
  2. CMDIFrameWindowImpl<T> MDI 主窗口(多文档界面)
  3. CMDIChildWindowImpl<T> MDI 子窗口
  4. CUpdateUI<T> 菜单项/工具栏按钮状态自动更新机制(启用/禁用/选中)
  5. COwnerDraw<T> 自绘控件辅助,简化 WM_DRAWITEM 处理

atldlgs

  1. CDialogImpl<T>
    1. 模态/非模态对话框基类(基于 .rc 资源)
  2. CSimpleDialog<t,modal>
    1. 只有 OK/Cancel 的简单对话框,无需派生
  3. CPropertyPageImpl<T>
    1. 属性页(Wizard 单页)
  4. CPropertySheetImpl<T>
    1. 属性表容器(多页 Tab 对话框)
  5. 系统通用对话框封装:
    1. CFileDialog
    2. CFontDialog
    3. CColorDialog
    4. CPrintDialog
    5. CFolderDialog

atlctrls

  1. 封装全部
    1. Win32 Common Controls,每个控件方法对应一条 SendMessage
  2. 基础控件:
    1. CButton
    2. CEdit
    3. CListBox
    4. CComboBox
    5. CStatic
  3. 列表类:
    1. CListViewCtrl
    2. CTreeViewCtrl
    3. CHeaderCtrl
  4. 工具类:
    1. CToolBarCtrl
    2. CStatusBarCtrl
    3. CTabCtrl
    4. CToolTipCtrl
  5. 输入类:
    1. CProgressBarCtrl
    2. CSliderCtrl
    3. CSpinButtonCtrl
    4. CHotKeyCtrl
  6. 日期类:
    1. CDateTimePickerCtrl
    2. CMonthCalendarCtrl

atlgdi

  1. DC 类(与 Skia 集成的接缝):
    1. CPaintDC WM_PAINT 专用,析构自动 EndPaint
    2. CClientDC 客户区 DC
    3. CWindowDC 整窗口含非客户区
    4. CMemDC 内存 DC 双缓冲
  2. GDI 对象:
    1. CFont
    2. CPen
    3. CBrush
    4. CBitmap
    5. CRgn
    6. CPalette,均支持 RAII 自动释放
  3. CDC 通用 DC 基类,封装 SelectObject/RestoreObject

atlscrl

  1. CScrollWindowImpl<T> 为普通窗口添加滚动条支持,自动处理
    1. WM_HSCROLL
    2. WM_VSCROLL
    3. WM_MOUSEWHEEL
  2. CScrollImpl<T>
    1. Mixin 形式,可叠加到任意窗口类
  3. CScrollContainer
    1. 可滚动的子窗口容器
  4. 自动计算滚动范围、处理键盘滚动(Page Up/Down/Home/End

atlsplit

  1. CSplitterWindow
    1. 水平或垂直分割两个子窗口,支持拖动分割线
  2. CSplitterWindowImpl<T>
    1. 可派生版本,自定义分割线外观
  3. 支持固定比例、最小尺寸限制、单侧固定模式
  4. 典型用途:
    1. 左侧树形目录 + 右侧内容区

atlddx

  1. Dialog Data eXchange
    1. 在控件和变量之间自动同步数据

  1. DoDataExchange() 里写一次,DoModal 前后自动读写,免去 GetDlgItemText 调用

atlctrlw

  1. CCommandBarCtrl
    1. 可在工具栏里嵌入菜单的控件,类似 PocketPC/早期 Windows Mobile 风格
      支持位图按钮、下拉菜单按钮、分隔符
  2. CFrameWindowImpl 配合,替代传统菜单栏,实现工具栏和菜单合一的界面

atlctrlx

  1. CBitmapButton
    1. 用位图替代文字的按钮,支持四态图(普通/悬停/按下/禁用)
  2. CCheckListViewCtrl
    1. 带复选框的 ListView
  3. CHyperLink
    1. 超链接控件,点击打开 URL
  4. CWaitCursor
    1. RAII 等待光标,构造时变沙漏,析构时恢复
  5. CCustomDraw<T>
    1. 自定义绘制(NM_CUSTOMDRAW)辅助 Mixin

atltheme

  1. 封装 Windows UxTheme APIuxtheme.dll),用于绘制与系统视觉样式一致的控件
  2. CTheme
    1. 主题句柄封装,OpenThemeData/CloseThemeData 自动管理
  3. CThemeImpl<T>
    1. Mixin,给窗口类添加主题感知能力
  4. 用于自绘控件时保持与 Windows Aero/Fluent 主题视觉一致

atldwm

  1. 封装 Desktop Window Man1ager APIdwmapi.dll
  2. CDwm DWM 操作集合
  3. 毛玻璃/Acrylic 背景:
    1. DwmEnableBlurBehindWindow / DwmExtendFrameIntoClientArea
  4. 缩略图预览:
    1. DwmRegisterThumbnail(任务栏预览)
  5. 窗口属性:
    1. 圆角模式、边框颜色(Windows 11
  6. 异形透明窗口的必用模块

atlfind

  1. CEditFindReplaceImpl<T>
    1. Mixin,给 CEditRichEdit 添加查找/替换功能
  2. 内置"查找"和"替换"对话框(系统通用对话框)
  3. 处理 FINDMSGSTRING 注册消息,实现高亮匹配、全部替换等操作
  4. 文本编辑器类应用直接拿来用

atlprint

  1. CPrinter
    1. 打印机句柄封装
  2. CPrinterDC
    1. 打印机 DC,类似 CPaintDC 但输出到打印机
  3. CDevMode
    1. 打印机设置(纸张/方向/质量)
  4. CPrintPreviewWindow
    1. 打印预览窗口
  5. CZoomScrollImpl<T>
    1. 带缩放的滚动视图,打印预览的基础组件

atlribbon

  1. 封装 Windows Ribbon FrameworkWin7+ 系统功能)
  2. CRibbonImpl<T>
    1. Ribbon 宿主 Mixin,加到框架窗口类上
  3. CRibbonUpdateUI<T>
    1. 替代 CUpdateUI,专门用于 Ribbon 控件状态更新
  4. Ribbon 的布局在 XML 资源(.ribbon 文件)里定义,通过 Windows API 渲染
  5. Office 2010+ 风格界面的实现基础

atluser

  1. 封装 Win32 用户界面对象句柄,提供 RAII 自动释放
  2. CIcon HICON
    1. 封装,加载/销毁图标
  3. CCursor HCURSOR
    1. 封装,加载/设置光标
  4. CAccelerator HACCEL
    1. 封装,键盘快捷键表
  5. CMenu HMENU
    1. 封装(比 atlctrls.h 里的更基础的版本)

atlwinx

  1. ATL CWindow 的功能补充,添加 WTL 没有其他地方放的窗口工具函数
  2. CWindowEx
    1. CWindow 基础上增加额外便利方法
  3. 滚动相关工具函数(GetScrollPos 封装)
  4. 窗口枚举辅助(子窗口遍历)
  5. 一些跨版本兼容的 API 包装

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享