Как я могу автоматически изменить размер формы MFC SDI?

Я делаю проект MFC SDI.
Существует основное представление, которое я хочу развернуть, но я не знаю, как это сделать.
(Мне удалось развернуть окно основного фрейма, но не удалось развернуть представление формы, как показано на изображении ниже.)
[введите описание изображения здесь][2]

BOOL CProjectNameApp::InitInstance()
{
...
    m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    m_pMainWnd->UpdateWindow();

    return TRUE;
}

void CProjectNameView::OnInitialUpdate()
{
    CFormView::OnInitialUpdate();
    
    //GetParentFrame()->RecalcLayout(TRUE);
    //ResizeParentToFit(FALSE);
}

Это последнее, что я сделал на данный момент.
Я написал m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);, чтобы развернуть главное окно,
и аннотировал две строки (GetParentFrame()->RecalcLayout(TRUE); и ResizeParentToFit(FALSE);) к форме, чтобы они соответствовали основному фрейму.

Я уже искал в Google и stackoverflow и прочитал много ответов, но мне ничего не помогает. Как я могу решить эту проблему?
(+) Базовым классом mainview(ProjectNameView) является CFormview, а не CView. И извините за мой плохой английский.
[2]: https://i.stack.imgur.com/dFMEY.png


person user530530    schedule 15.05.2021    source источник
comment
Formview на изображении покрывает всю клиентскую область главного окна. Так что максимально. Если вы имеете в виду, что хотите изменить размер представления и его элементов управления, это невозможно таким образом, поскольку размер элементов управления определяется вашим диалоговым ресурсом. Но вы можете сделать это программно, вам нужно перебирать элементы управления и изменять их размер один за другим по мере необходимости (GetWindow()). Техника RecalcLayout()/ResizeParentToFit() используется для изменения размера главного окна, чтобы оно точно соответствовало форме - и, конечно, это не имеет смысла, если главное окно развернуто.   -  person Constantine Georgiou    schedule 15.05.2021
comment
@ConstantineGeorgiou Я понимаю, о чем вы говорите ... Я найду способ использовать GetWindow() . Спасибо   -  person user530530    schedule 16.05.2021


Ответы (1)


Чтобы автоматически изменить размер элементов управления внутри формы SDI, вам не нужно писать ни одной строки кода в VS2019. Редактор rc имеет функции динамической компоновки.

Вот наглядный пример того, как его использовать:

введите здесь описание изображения

Результат

введите здесь описание изображения

person Tom Tom    schedule 18.05.2021