2013-02-14 132 views
1

我正在处理传送给我的MFC项目。 它的基本布局(从CFrameWnd衍生主帧)在该草图所示: MainFrame layout将框架中的对话框对齐并设置其宽度

CommandBarControlBar,从CDialogBar两者衍生,使用WS_CHILD | CBRS_ALIGN_RIGHT作为风格创建的。
这对于对齐很好。但我想定义了这两个元素的宽度,并且找不到设置它的方法。

当我试图EnableDocking对话框,我无法设法解决断言。此外,我不确定这是我所寻找的。

回答

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; 
}