2013-02-14 2 views
1

Я работаю над проектом MFC, который был передан мне. Это основная схема (основная рама, полученный из CFrameWnd) показан на этом эскизе: MainFrame layoutВыровнять DialogBar в рамке и установить ее ширину

CommandBar и ControlBar, как полученные из 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; 
} 
Смежные вопросы