首页 > 解决方案 > 如何将条带附加到 CReBar 控件的右侧

问题描述

在我的框架窗口上,我有一个 CReBar 控件,在几行上带有不可移动的条带。在最后一行有两条带,它们当前向左对齐,第二条紧跟在第一条之后。

+--------+-------+------------------------------------+
|11111111|2222222|
+--------+-------+------------------------------------+

但我的产品管理人员希望我将第二条带子连接到线的右侧,中间留有空白区域。

+--------+------------------------------------+-------+
|11111111|                                    |2222222|
+--------+------------------------------------+-------+

我在任何地方都找不到如何做到这一点。如果有任何帮助,我将不胜感激。

编辑:实际代码使用 Xtreme GUI 库,但其结构非常标准:

// ... Create toolbars
// Add toolbars to ReBar.
if (m_wndReBar.Create(this) &&
    m_wndReBar.AddToolBar(pNavigateTB, RBBS_BREAK | RBBS_NOGRIPPER) &&
    m_wndReBar.AddBar(&m_wndAddressBar, NULL, NULL, RBBS_NOGRIPPER) &&
    m_wndReBar.AddToolBar(pMainToolBar, RBBS_BREAK | RBBS_NOGRIPPER) &&
    m_wndReBar.AddToolBar(pViewsHelpTB, RBBS_NOGRIPPER))
{
    ...
}

m_wndReBar是一个 CReBar 派生类,工具栏是通用 Toolbar 控件的 Xtreme 包装器。他们使用常规的 MFC 标志,我没有找到将工具栏向右对齐的选项。

标签: windowsvisual-c++mfccommon-controls

解决方案


工具栏没有样式或参数,这迫使它向右对齐。但是,可以通过将后续工具栏推到最右侧位置的方式来扩展前一个工具栏。

假设如上图所示,两个连续的工具栏在 CReBar 的同一行,第一个工具栏的索引为 I。比命令

m_ReBar.SendMessage(RB_MAXIMIZEBAND, I, 0);

将第二个工具栏向右移动,如第二个图所示。这个最右边的位置将在窗口调整大小期间保留,但是向钢筋添加新工具栏可能会破坏它。


推荐阅读