一般常用的有两种方案,一是在多个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;
}
比如:
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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货