멀티뷰 구현..

반응형

void CMainFrame::OnViewerFirst()
{
   if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CFirstDlg)))
       return;
   SwitchForm(IDD_FIRST_DIALOG);
}
void CMainFrame::SwitchForm(int nForm)
{
   CView *pOldActiveView = GetActiveView();
   CView *pNewActiveView = (CView *)GetDlgItem(nForm);
   CCreateContext context;

   switch(nForm)
   {
       case IDD_MULTIVIEWER_FORM :
           pNewActiveView = (CView *) new CMultiViewerView;
           break;
       case IDD_FIRST_DIALOG :
           pNewActiveView = (CView *) new CFirstDlg;
           break;
       case IDD_SECOND_DIALOG :
           pNewActiveView = (CView *) new CSecondDlg;
           break;
       case IDD_THIRD_DIALOG :
           pNewActiveView = (CView *) new CThirdDlg;
           break;
  }
   context.m_pCurrentDoc = pOldActiveView->GetDocument();
   pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, nForm, &context);
   pNewActiveView->OnInitialUpdate();
   SetActiveView(pNewActiveView);
   pNewActiveView->ShowWindow(SW_SHOW);
   delete pOldActiveView;
   pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
   RecalcLayout();
}

참고...

FormView 베이스의 Dialog를 만든 후...
이 다이알로그의 "Dialog Properties"에..
Style을 "Popup"에서 "Child"로 바꿔주세요...
나머지 코딩은 앞글의 소스그대로 사용하면 됨..

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유