Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > SDI приложение с FrameWnd поменять диалог


Автор: kurlyak 25.4.2013, 12:18
Есть приложение SDI на базе CFrameWnd. На ресурсе диалога CFrameWnd есть кнопка после запуска приложения. По нажатию на эту кнопку должен поменяться ресура диалога в главном фрейме - то есть по нажатию на кнопку на диалоге должен показаться другой диалог. Как это реализовать? Пробывал обрабатывать нажатие кнопки в классе CMainFrame - не реагирует. Мне надо что бы отобразился другой диалог и на нем тоже кнопка, по нажатию на этой следующей кнопке на следующем диалоге- показался следующий диалог с кнопкой, и так далее.

Автор: mbedreal 26.4.2013, 13:28
Ресурс диалога в RT не участвует. Так что выводи новый диалог с такой же кнопкой. Или не понял я в чем проблема?
 

Автор: Earnest 26.4.2013, 18:36
Надеюсь, фрейм отдельно, диалог отдельно?
Тогда просто по нажатию кнопки посылай PosMessage главному окну какое-нибудь сообщение и закрывай диалог. Поймав сообщение, главное окно создает новый диалог и т.д.

Автор: kurlyak 26.4.2013, 20:48
Вобщим спасибо господа и дамы за внимание, я решил проблему:

Код

void CMyFormView18::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
    CDocument* pDoc= pFrame->GetActiveDocument();
    CView* pCurrView = pFrame->GetActiveView();
    CView* pNewView = new CMyFormView19();
    pNewView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
                pFrame->rectDefault, pFrame, AFX_IDW_PANE_FIRST, NULL);
    pNewView->OnInitialUpdate();
    pNewView->ShowWindow(SW_SHOW);
    pCurrView->ShowWindow(SW_HIDE);
    pDoc->AddView(pNewView);
    pDoc->RemoveView(pCurrView);
    pFrame->SetActiveView(pNewView);
    pFrame->RecalcLayout();
}


Код

void CMainFrame::OnNew()
{
    // TODO: Add your command handler code here
    CDocument* pDoc= GetActiveDocument();
    CView* pCurrView = GetActiveView();
    CView* pNewView = new CFishfarmingView();
    pNewView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
                rectDefault, this, AFX_IDW_PANE_FIRST, NULL);
    pNewView->OnInitialUpdate();
    pNewView->ShowWindow(SW_SHOW);
    pCurrView->ShowWindow(SW_HIDE);
    pDoc->AddView(pNewView);
    pDoc->RemoveView(pCurrView);
    SetActiveView(pNewView);
    RecalcLayout();
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)