注释
Microsoft基础类(MFC)库将继续受到支持。 但是,我们不再添加功能或更新文档。
本文档介绍 Visual Studio 2008 SP1 中引入的接口元素,还介绍了与早期版本的库之间的差异。
下图显示了使用新接口元素生成的应用程序。
窗口停靠
窗口停靠功能类似于 Visual Studio 图形用户界面使用的窗口停靠。
控件条现在是窗格
控件栏现在称为窗格,派生自 CBasePane 类。 在早期版本的 MFC 中,控制条的基类是 CControlBar。
应用程序主框架窗口通常由 CFrameWndEx 类 或 CMDIFrameWndEx 类表示。 主框架称为 停靠站点。 窗格可以具有三种类型的父级之一:停靠站点、停靠栏或微型框窗口。
有两种类型的窗格:不可调整大小和可调整大小。 可以使用分隔条或滑块来调整可调整大小的窗格的大小,例如状态栏和工具栏。 可调整大小的窗格可以形成容器(一个窗格可以停靠到另一个窗格,从而在两个窗格之间创建一个拆分器)。 但是,不能将可调整大小的窗格附加(停靠)到停靠栏。
如果应用程序使用不可调整大小的窗格,请从 CPane 类派生它们。 如果应用程序使用可调整大小的窗格,请从 CDockablePane 类派生它们
停靠站点
停靠站点(或主框架窗口)拥有应用程序中的所有窗格和微型框架窗口。 停靠站点包含一个 CDockingManager 成员。 此成员维护属于停靠站点的所有窗格的列表。 对列表进行排序,以便停靠站点外边缘创建的窗格放置在列表的开头。 当框架重新绘制停靠站点时,它会遍历列表,并调整每个窗格的布局来包括停靠站点当前的边界矩形。 当需要调整停靠布局时,可以调用 AdjustDockingLayout 或 RecalcLayout,框架会将此调用重定向到停靠管理器。
停靠栏
每个主框架窗口都可以在其边框上放置 停靠栏 。 停靠栏是属于 CDockSite 类的窗格。 停靠栏可以接受派生自 CPane 的对象,例如工具栏。 若要在初始化主框架窗口时创建停靠栏,请调用 EnableDocking。 若要启用自动隐藏栏,请调用 EnableAutoHideBars。
EnableAutoHideBars 创建 CAutoHideDockSite 对象,并将其放置在每个停靠栏旁边。
每个停靠栏被划分为若干个停靠行。 停靠行由 CDockingPanesRow 类表示。 每个停靠行都包含一个工具栏列表。 如果用户停靠工具栏或将工具栏从一行移到同一停靠栏中的另一行,则框架会创建一个新行并相应地调整停靠栏的大小,或者将工具栏放置在现有行上。
微型框窗口
浮动窗格驻留在迷你框架窗口中。 迷你框架窗口由两个类表示: CMDITabInfo 类 (只能包含一个窗格)和 CMultiPaneFrameWnd 类 (可以包含多个窗格)。 若要在代码中浮动窗格,请调用 CBasePane::FloatPane。 窗格浮动后,框架会自动创建一个微型框架窗口,该微型框架窗口将成为浮动窗格的父窗口。 当浮动窗格停靠时,框架会重置其父窗格,浮动窗格将成为停靠栏(对于工具栏)或停靠站点(对于可调整大小的窗格)。
窗格分隔条
窗格分隔符(也称为滑块或拆分器)由 CPaneDivider 类表示。 当用户停靠窗格时,框架会创建窗格分隔条,无论窗格是停靠在停靠站点中还是停靠在另一个窗格上。 当窗格停靠到停靠站点时,窗格分隔条称为“默认窗格分隔条”。 默认窗格分隔条负责停靠站点中所有停靠窗格的布局。 停靠管理器维护默认窗格分隔条的列表和窗格的列表。 停靠管理器负责所有停靠窗格的布局。
容器
所有可调整大小的窗格在相互停靠时,都在容器中进行维护。 容器由 CPaneContainer 类表示。 每个容器都有指向其左窗格、右窗格、左子容器、右子容器的指针,以及左右部分之间的拆分器。 (左 和 右 不指物理上的两侧,而是标识树结构中的分支。通过这种方式,我们可以构建窗格和分割器的树结构,从而实现可以同时调整大小的窗格的复杂布局。) 该 CPaneContainer 类维护容器树;它还维护驻留在此树中的窗格和滑块的两个列表。 窗格容器管理器通常嵌入到带有多个窗格的默认滑块和微型框架窗口。
自动隐藏控件栏
默认情况下,每个 CDockablePane 选项都支持自动隐藏功能。 当用户单击标题 CDockablePane上的固定按钮时,框架会将窗格切换为自动隐藏模式。 为了处理单击,框架将创建一个 CMFCAutoHideBar 类和一个与对象关联的 CMFCAutoHideBar。 框架将新的 CMFCAutoHideBar 放在 CAutoHideDockSite 上。 框架还会将 CMFCAutoHideButton 附加到工具栏上。
CDockingManager 类维护 CDockablePane。
选项卡式控件条和 Outlook 栏
CMFCBaseTabCtrl 类使用可拆分的选项卡实现了选项卡式窗口的基本功能。 若要使用 CMFCBaseTabCtrl 对象,请在应用程序中初始化 CBaseTabbedPane 类 。
CBaseTabbedPane 派生自 CDockablePane 并维护指向 CMFCBaseTabCtrl 对象的指针。
CBaseTabbedPane 使用户可以停靠选项卡式控件条并调整其大小。 使用 CDockablePane::AttachToTabWnd 可以动态创建已停靠的选项卡式控件条。
Outlook 栏控件也基于选项卡式条形图。
CMFCOutlookBar 类派生自 CBaseTabbedPane. 有关如何使用 Outlook 栏的详细信息,请参阅 CMFCOutlookBar 类。