我想实现显示两个视图的功能,其中一个是一个单view类,另一个是一个tree和list分割的类。在CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)下new new CMainFrame 视图分割框架和m_pView = new CWGSModelView一个视图框架有一个先后顺序问题,现在我能成功显示这两个视图了,但是有新的问题:


就是初始化后可以实现第一个视图的显示功能,但是在切换视图的时候发现第一个视图的功能无法实现了,点击第一个视图后会出现图中的状况,就好像只是覆盖了一下第二个视图,这究竟是怎么回事?
这是我的函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
m_pMainView = new CMainFrame;
m_pMainView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW&~WS_BORDER, CFrameWnd::rectDefault, this, NULL,0, pContext);
m_pMainView->ShowWindow(SW_HIDE);
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CAccessViewTree), CSize(100, 100), pContext))
return FALSE;
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CListView1), CSize(100, 100), pContext))
return FALSE;
m_pLeftView = (CAccessViewTree*)m_wndSplitter.GetPane(0, 0);
m_pUsersView = (CListView1*)m_wndSplitter.GetPane(0, 1);
m_pView = new CWGSModelView;
m_pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW&~WS_BORDER, CFrameWnd::rectDefault, this, NULL, pContext);
m_pView->ShowWindow(SW_SHOW);
m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
return TRUE;
}
void CMainFrame::SwitchToView(int nViewType)
{
}
BOOL CMainFrame::Switch(int nID)
{
if (nID == m_CurrentID)
{
return false;
}
switch (nID)
{
case IDD_FORMVIEW:
m_pView->ShowWindow(SW_SHOW);
m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pMainView->ShowWindow(SW_HIDE);
m_pMainView->SetDlgCtrlID(AFX_IDW_PANE_FIRST + 1);
m_CurrentID = IDD_FORMVIEW;
break;
case AFX_IDW_PANE_FIRST + 1:
m_pMainView->ShowWindow(SW_SHOW);
m_pMainView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pView->ShowWindow(SW_HIDE);
m_pView->SetDlgCtrlID(IDD_FORMVIEW);
m_CurrentID = AFX_IDW_PANE_FIRST + 1;
break;
}
RecalcLayout();
return true;
}
谢谢各位老师指点!