派生的窗口类

可以直接从 CWnd 创建窗口,也可以从 CWnd 派生新的窗口类。 这是创建专属自定义窗口的常见方式。 但是,框架程序中使用的大多数窗口都是从 MFC 提供的某一种 CWnd 派生的框架窗口类创建的。

框架窗口类

CFrameWnd
用于构建单个文档及其视图的 SDI 框架窗口。 该框架窗口既是应用程序的主框架窗口,又是当前文档的框架窗口。

CMDIFrameWnd
用作 MDI 应用程序的主框架窗口。 该主框架窗口是所有 MDI 文档窗口的容器,并与其共享菜单栏。 MDI 框架窗口是桌面上显示的常用窗口。

CMDIChildWnd
用于 MDI 主框架窗口中打开的各个文档。 每个文档及其视图都由 MDI 主框架窗口包含的 MDI 子框架窗口构建。 MDI 子窗口非常类似于典型的框架窗口,但它包含在 MDI 框架窗口中,不位于桌面。 但 MDI 子窗口没有自己的菜单栏。 它必须与其所属的 MDI 框架窗口共享菜单栏。

有关详细信息,请参阅框架窗口

CWnd 派生的其他窗口类

除了框架窗口,其他多个主要类别的窗口也都源自 CWnd

  • 视图
    视图是使用 CWnd 派生类 CView(或其派生类之一)创建的。 将视图附加到文档并用作文档和用户之间的中介。 视图是一个子窗口(不是 MDI 子窗口),通常填充 SDI 框架窗口或 MDI 子框架窗口的工作区(或者工具栏或状态栏未覆盖的工作区部分)。

  • 对话框
    对话框是使用 CWnd 派生类 CDialog 创建的。

  • 表单
    基于对话框模板资源(例如对话框)的表单视图是使用类 CFormViewCRecordViewCDaoRecordView 创建的。

  • 控件
    按钮、列表框和组合框等控件是使用从 CWnd 派生的其他类创建的。 请参阅控件主题

  • 控件条
    包含控件的子窗口。 示例包括工具栏和状态栏。 请参阅控件条

窗口类层次结构

请参阅 MFC 参考中的 MFC 层次结构图文档/视图体系结构中对视图进行了说明。 对话框中对对话框进行了说明。

创建自己的专用窗口类

除了类库提供的窗口类之外,可能还需要专用子窗口。 要创建此类窗口,请创建自己的 CWnd 派生类并将其设置为框架或视图的子窗口。 请记住,框架管理文档框架窗口的工作区范围。 大多数工作区由视图管理,但其他窗口(例如控件条或自己的自定义窗口)可能与视图共享空间。 可能需要与类 CViewCControlBar 中的机制进行交互,以便在框架窗口的工作区中定位子窗口。

创建窗口讨论了窗口对象的创建及其管理的窗口。

另请参阅

窗口对象