MFC教程(13)-MFC工具条和状态栏(2)
2007-10-04 20:11:26 来源:WEB开发网然后,工具条调用ControlBar::EnableDocking使泊位对工具条有效,如果在调用ControlBar::EnableDocking时指定的泊位目的边和边框窗口能够泊位的边不符合,那么工具条不能泊位,它将漂浮。
最后,边框窗口调用CFrameWnd::DockControlBar泊位工具条。
泊位后形成窗口层次关系
边框窗口、泊位条、工具条的包含关系如下:
边框窗口
泊位条1
工具条1
工具条2
…
泊位条2
…
边框窗口包含1到4个泊位条子窗口,每个泊位条包含若干个控制条子窗口。
泊位的实现
CFrameWnd::EnableDocking指定哪边接受泊位,则为泊位准备一个泊位条。泊位条用CDockBar描述,派生于CControlBar。如果指定任何边都可以泊位,则创建四个CDockBar对象和对应的HWND窗口。然后,调用ControlBar::EnableDocking在对应的泊位条内安置工具条。
MFC设计了CDockBar类和CFrameWnd的一些函数来实现泊位,具体代码实现在此不作详细讨论。
实现漂浮工具条的方法:
边框窗口调用FloatControlBar实现工具条的漂浮。
漂浮的实现:
首先,创建一个微型漂浮边框窗口,该边框窗口有一个泊位条。
然后,在微型边框窗口的泊位条内放置工具条。
MFC设计了微型边框类CMiniFrameWnd,在此基础上派生出微型泊位边框窗口类CMiniDockFrameWnd。CMiniDockFrameWnd增加了一个CDockBar类型成员变量m_wndDockBar,即泊位条。
在CMiniDockFrameWnd对象被创建时,创建泊位条m_wndDockBar。泊位条m_wndDockBar的父窗口如同CMiniDockFrameWnd的父窗口一样,是调用FloatControlBar的边框窗口,而不是微型泊位边框窗口。微型边框窗口和泊位条创建完成之后,调用ControlBar::DockControlBar泊位工具条在CMiniDockFrameWnd窗口。
具体的代码实现略。
更多精彩
赞助商链接