MFC笔记2
窗口
| 基类 | 界面类型 | 典型用途 | 现代项目推荐度 |
|---|---|---|---|
CDialogEx |
独立对话框 | 弹窗、设置窗口、主对话框 | ✅ 强烈推荐 |
CDialog |
独立对话框 | 兼容旧项目 | ❌ 不推荐 |
CDHtmlDialog |
HTML 嵌入对话框 | 网页内容、富界面 | ⚠️ 兼容性差,慎用 |
CFormView |
文档视图 | SDI/MDI 主界面 | ✅ 适用场景明确 |
CMFCPropertyPage |
属性页 / 标签页 | 多标签设置窗口 | ✅ 推荐 |
COlePropertyPage |
传统属性页 | ActiveX 控件属性 | ❌ 已过时 |
CDialogEx
- 定位:MFC 从 VS2008 引入的增强版对话框基类,是现代 MFC 项目的首选对话框基类。
- 核心功能:
- 支持 对话框背景图片 / 渐变色
- 支持 控件透明、动态布局
- 自带更完善的
DoModal()模态 / 非模态管理
- 适用场景:绝大多数普通对话框(设置窗口、弹窗、配置界面等),替代老旧的
CDialog。
CDialog
- 定位:MFC 传统标准对话框基类,
CDialogEx的前身。 - 核心功能:基础的模态 / 非模态对话框实现,消息循环、控件绑定、DDX/DDV 数据交换。
- 适用场景:兼容旧项目、不需要美化功能的简单对话框。新项目推荐优先用
CDialogEx。
CDHtmlDialog
定位:基于 IE 内核的HTML 对话框基类,可以直接嵌入网页 / HTML 作为界面。
核心功能:
- 用 HTML+CSS 写界面,MFC 和 JS 双向通信
- 适合做复杂 UI、富文本、Web 内容展示
适用场景:需要快速实现复杂界面、嵌入网页内容、或与 Web 服务交互的窗口。
注意:依赖系统 IE 内核,兼容性较差,新项目不推荐。
CFormView
- 定位:视图类(View),基于对话框模板的视图界面,用在文档 / 视图架构(Doc/View)里。
- 核心功能:
- 像对话框一样拖控件,但作为视图嵌入 MDI/SDI 框架
- 支持 DDX/DDV,适合做带控件的主界面
- 适用场景:SDI/MDI 程序中,需要用对话框模板作为主视图的界面,比如工具软件的主工作区。
CMFCPropertyPage
- 定位:MFC 新版属性页(标签页)基类,配合
CMFCPropertySheet使用。 - 核心功能:
- 用于创建选项卡式界面的单个页面
- 支持 MFC 的现代界面风格(Office/VS 风格)
- 适用场景:多标签设置窗口、属性配置界面,比如软件的 “选项” 对话框里的不同标签页。
COlePropertyPage
- 定位:OLE/ActiveX 控件用的传统属性页基类,
CMFCPropertyPage的前身。 - 核心功能:为 ActiveX 控件提供属性配置界面,兼容 COM/OLE 技术。
- 适用场景:老的 ActiveX 控件开发,新项目几乎不用。