在Frame中对齐DialogBar并设置其宽度

时间:2013-02-14 15:08:57

标签: layout mfc

我正在研究转移给我的MFC项目。 它的基本布局(源自CFrameWnd的主框架)显示在此草图中: MainFrame layout

来自CommandBar的{​​{1}}和ControlBar是使用CDialogBar作为样式创建的。
这对齐对齐。但我想定义这两个元素的宽度,但无法找到设置它的方法。

当我尝试WS_CHILD | CBRS_ALIGN_RIGHT对话框时,我无法解决断言。此外,我不确定这是否是我要找的。

1 个答案:

答案 0 :(得分:2)

覆盖CalcDynamicLayout并返回计算出的大小就是我要找的。

示例:

CSize CommandBar::CalcDynamicLayout(int nLength, DWORD dwMode)
{
    CSize size;
    CRect parentRect;
    if (GetParent())
        GetParent()->GetClientRect(&parentRect);
    size.cy = parentRect.Height();
    size.cx = (int)(abs(parentRect.Width() - parentRect.Height() + GetSystemMetrics(SM_CYMENUSIZE)) * 0.5);
    return size;
}