MDI MFC VC++, как переключать представления в мейнфрейме

Я делаю приложение MDI, и без использования сплиттера мой документ имеет несколько представлений. Теперь я хочу изменить вид документа из MainFrame приложения...

вот что я делаю, у меня есть outlookbar с некоторыми кнопками меню, когда пользователь нажимает эти кнопки, тогда я показываю CFormView внутри документа как дочерний элемент вместо всплывающего диалога. Теперь я не знаю, как изменить представление от MainFrame, где был написан обработчик меню.

Пожалуйста, предложите любой совет, если вы знаете... Есть более 5 различных видов, и 4 из них являются CFormView.

MainFrame -> MenuhandlerFunction (клики по меню)

MenuHandlerFunction -> Открыть новый документ с новым представлением на основе CFormView

(всего 5 различных CFormView и их обработчики внутри MainFrame Written)

1 ответ

Решение

Я не очень уверен, как вы выбираете, какое представление отображать, но вот некоторый код для итерации по представлениям текущего документа в вашем MainFrame:

РЕДАКТИРОВАТЬ: модифицированный код для MDI

CMDIChildWnd *pChild = (CMDIChildWnd*)GetActiveFrame();  // EDIT: added line
CDocument *pDoc = pChild->GetActiveDocument();           // EDIT: added pChild->
POSITION pos = pDoc->GetFirstViewPosition();
while (pos != NULL)
{   CView* pView = GetNextView(pos);
    // if this is the view you want to activate
    //     pChild->SetActiveView(pView);                 // EDIT: added pChild->
}
Другие вопросы по тегам