可以直接从 CWnd
窗口创建窗口,也可以从 CWnd
中派生新的窗口类。 这是你通常创建自己的自定义窗口的方式。 但是,大多数框架程序中使用的窗口都是从 MFC 提供的派生框架窗口类之一 CWnd
创建的。
框架窗口类
CFrameWnd
用于框架单个文档及其视图的 SDI 框架窗口。 框架窗口既是应用程序的主框架窗口,也是当前文档的框架窗口。
CMDIFrameWnd
用作 MDI 应用程序的主框架窗口。 主框架窗口是所有 MDI 文档窗口的容器,并与它们共享其菜单栏。 MDI 框架窗口是桌面上显示的顶级窗口。
CMDIChildWnd
用于在 MDI 主框架窗口中打开的各个文档。 每个文档及其视图都由 MDI 主框架窗口包含的 MDI 子框架窗口进行框架。 MDI 子窗口看起来非常类似于典型的框架窗口,但包含在 MDI 框架窗口中,而不是坐在桌面上。 但是,MDI 子窗口缺少其自己的菜单栏。 它必须共享包含它的 MDI 框架窗口的菜单栏。
有关详细信息,请参阅 框架窗口。
派生自的其他窗口类 CWnd
除了框架窗口,其他几个主要类别的窗口派生自 CWnd
:
视图:
视图是使用CWnd
-derived 类CView
(或其派生类之一)创建的。 视图附加到文档,充当文档和用户之间的中介。 视图是一个子窗口(而不是 MDI 子窗口),通常填充 SDI 框架窗口或 MDI 子框架窗口的工作区(或者工具栏或状态栏未覆盖的工作区的该部分)。对话框:
使用 -derived 类CDialog
创建CWnd
对话框。窗体:
基于对话框模板资源(如对话框)的表单视图是使用类CFormView
CRecordView
CDaoRecordView
或 。控件:
使用派生自CWnd
的其他类创建按钮、列表框和组合框等控件。 请参阅 “控件”主题。控件条:
包含控件的子窗口。 示例包括工具栏和状态栏。 请参阅 控制栏。
窗口类层次结构
请参阅 MFC 参考中的 MFC 层次结构图表。 文档 /视图体系结构中介绍了视图。 对话框在 对话框中进行说明。
创建自己的 Special-Purpose 窗口类
除了类库提供的窗口类外,你可能还需要特殊用途的子窗口。 若要创建此类窗口,请创建自己的 CWnd
派生类,并将其设为框架或视图的子窗口。 请记住,框架管理文档框架窗口工作区的范围。 大多数工作区由视图管理,但其他窗口(如控件栏或你自己的自定义窗口)可能会与视图共享空间。 可能需要与类 CView
中的机制进行交互,以及 CControlBar
将子窗口定位在框架窗口的工作区中。
创建窗口 讨论如何创建窗口对象及其管理的窗口。