一般常用的有两种方案,一是在多个View中切换,而是用CSplitterWnd的切分视图,不过基本原理都是重载FrameWnd::OnCreateClient函数,生成自己的视图.
比如:
CMainFrame::OnCreateClient(...)
{
  CCreateContext cc;
  cc.m_pCurrentDoc = pContext->m_pCurrentDoc;
  cc.m_pNewViewClass=RUNTIME_CLASS(CView1);
  m_pView1=(CView1*)CreateView(&cc,ID_VIEW1);
  cc.m_pNewViewClass=RUNTIME_CLASS(CView2);
  m_pView2=(CView2*)CreateView(&cc,ID_VIEW2);
  SwitchToView(ID_VIEW1);
  return TRUE;
}void CMainFrame::SwitchToView(int nID)
{
    m_pView1->SetDlgCtrlID(ID_VIEW1);
    m_pView1->ShowWindow(SW_HIDE);
    m_pView2->SetDlgCtrlID(ID_VIEW2);
    m_pView2->ShowWindow(SW_HIDE);
    if (nID==ID_VIEW1)
    {
      m_pView1->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
      m_pView1->ShowWindow(SW_SHOW);
    } 
    else
   {
      m_pView2->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
      m_pView2->ShowWindow(SW_SHOW);
   }
   RecalcLayout();
}如果是用分割视图的话简单一些.首先给MainFrame添加一个CSplitterWnd m_wndSplitter成员.
CMainFrame::OnCreateClient(...)
{
   m_wndSplitter.CreateStatic(this,1,2);
   m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CView1),CSize(200,400),pConext);
   m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CView2),CSize(200,200),pContext);
   return TRUE;
}