我想切换用CSplitterWnd分割的某一个窗口,显示不同的数据库视图
采用了类似以下的代码
//m_wndSplitter为CSplitterWnd类
void CChildFrame::OnViewYview() 
{
//SAMPLE: get the existing view
CWnd* pWnd = m_wndSplitter.GetPane(0, 1);
CXView* pOldView = DYNAMIC_DOWNCAST(CXView, pWnd);
ASSERT(pOldView != NULL); CDocument* pDoc = pOldView->GetDocument(); //SAMPLE: kill the existing view m_wndSplitter.DeleteView(0, 1); //SAMPLE: create an XView in its place CCreateContext ctxt;
ctxt.m_pCurrentDoc = pDoc; VERIFY(m_wndSplitter.CreateView(0, 1,
RUNTIME_CLASS(CYView), CSize(100, 100), &ctxt));
m_wndSplitter.RecalcLayout();
}
不成功,提示创建视图时错。
我想采用类似以下代码(该代码在没有分割的视图中引用的,网络上获取)。如果该代码用于切换用CSplitterWnd分割的某一格窗口时该如何改造他??或者提供一个方案给我。谢谢
void CMainFrame::ChangeForm(int nForm)
{
CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*)GetDlgItem(nForm);
if (pNewActiveView == NULL)
{
switch (nForm) 
{
case IDW_ORDER_FORM:
pNewActiveView = (CView*)new CProdView;
break;
case IDW_CUST_FORM:
pNewActiveView = (CView*)new CCustView;
break;
case IDW_SALE_FORM:
pNewActiveView = (CView*)new CSaleView;
break;
}
    //初始化新切换的视图
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault,
this, nForm, &context);
pNewActiveView->OnInitialUpdate();
}
//显示新切换的视图
SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
    if (pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CProdView))
pOldActiveView->SetDlgCtrlID(IDW_ORDER_FORM);
else 
if (pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CCustView))
pOldActiveView->SetDlgCtrlID(IDW_CUST_FORM);
else
pOldActiveView->SetDlgCtrlID(IDW_SALE_FORM);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}