MFC笔记2

窗口

基类界面类型典型用途现代项目推荐度
CDialogEx独立对话框弹窗、设置窗口、主对话框✅ 强烈推荐
CDialog独立对话框兼容旧项目❌ 不推荐
CDHtmlDialogHTML 嵌入对话框网页内容、富界面⚠️ 兼容性差,慎用
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 控件开发,新项目几乎不用。