wxAUI是一个高级用户接口。最初由kirix Cprp提供。wxAUI尝试封装以下的UI:
l Frame管理。
l 工具条。
l 非模态控件
l L&F。
_____________________________________________________________________________________________________
wxAuiManager
wxAuiManager是wxAUI类框架的关键类。
wxAuiManager为一个特定的wxFrame管理着相应的面板(pane),它使用一个面板的wxAuiPaneInfo信息来决定每个面板停靠和浮动行为。wxAuiManager使用wxwidgets的sizer机制来放置第个Frame的布局。它使用一个可替换的dockart类来完成所有的绘制,因此,所有绘制都在一个地方。
wxAuiManager以如下方式工作:程序员添加面板到该类中,或者修改已经存在的面板属性(依靠地方,浮动状态,显示状态等),为了应用这些改变,需要调用wxAuiManager的Undate()函数。通过一次修改多个面板,然后再使用Update()一次提交所有更改,这种批处理的方式避免了闪烁。
如下:
wxTextCtrl* text1 = new wxTextCtrl(this, -1);
wxTextCtrl* text2 = new wxTextCtrl(this, -1);
m_mgr.AddPane(text1, wxLEFT, wxT("Pane Caption"));
m_mgr.AddPane(text2, wxBOTTOM, wxT("Pane Caption"));
m_mgr.Update();
另外,位置也可以很容易更改。以下是一个在tool window的将一个存在的面板设为浮动。
m_mgr.GetPane(text1).Float();
层(Layer),行(Row)、方位(Direction)、位置(Position)
在wxAUI中,停靠布局通过几个面板参数进行设置。其中有四个重要参数:
Direction:每个停靠面板(docked pane)都有一个方位,顶,底,左,右,或中。
Position:在一个dock中,可以放置多个面板。想像下,两个面板停靠在一个窗口的左边。一个面板可以挨着另一个。在相应的dock中,面板的位置表示它的次序,从0开始。因此,如果两个面板停在左边,第一个面板的position=0,第二个为1.
Row:一行可以允许两个dock挨着。这种方式在一个重要的地方有应用:toolbar。可以有多个toolbar行,第一行为0,第二行为1.row也可以用于垂直的dock面板。
Layer:一个层相当于一洋葱片。层1表示管理面板的最中心。因而,如果面板在层0,它将离中心窗口(有时也称为“内容窗口(content window)”)非常接近。添加层,可以“吞下”较低值的所有层。这与行的概念非常接近,但不同的是,由于较低值的所有面板让步于较高值的面板。理解层的最好方式是运行wxAUI示例。
______________________________________________________________________________________________
wxAUIPaneInfo
wxAUIPaneInfo也是wxAUI类框架的一部分。
wxAuiPaneInfo指定了一个pane的所有参数。这些参数指定了pane在屏幕上的位置,是否docked或floating或hidden。另外,这些参数指定了pane的docked位置,floating位置,preferred size,minimum size,caption text等。

本文详细介绍了wxAUI框架的核心组件及其工作原理,包括wxAUIManager类、wxAUIPaneInfo对象和停靠布局参数。通过示例展示了如何添加、修改面板以及调整面板的浮动和停靠状态。
694

被折叠的 条评论
为什么被折叠?



