1

私に転送された MFC プロジェクトに取り組んでいます。その基本的なレイアウト (から派生したメイン フレームCFrameWnd) は、次のスケッチに示されています。 メインフレームのレイアウト

CommandBarと はどちらControlBarも から派生したもので、 as スタイルCDialogBarを使用して作成されました。 これはアライメントに問題ありません。しかし、これら 2 つの要素の幅を定義したいのですが、設定する方法が見つかりません。WS_CHILD | CBRS_ALIGN_RIGHT

ダイアログ バーを表示しようとしたときにEnableDocking、アサーションを解決できませんでした。また、これが私が探しているものかどうかもわかりません。

4

1 に答える 1

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;
}
于 2013-03-19T13:28:58.420 に答える