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 控件开发,新项目几乎不用。