在初始分隔四个视图,然后左上视图是树状结构,通过节点改变左下和右下视图;;;;左下视图可以输入数字,并在右下视图中textout显示出来。可是,我发现根本显示不出来,查了一下,发现没有关联到document。但是一般view创建后,不是自动关联到document吗?请问我这个该如何关联呢,代码如下:mainframe.cpp
void CMainFrame::SwitchToView(int nViewType)
{
CView* pView = (CView*)m_wndSplitter1.GetPane(1, 0);
// CRect rcRight, rcFrame;
// pView->GetClientRect(&rcRight);
// GetClientRect(&rcFrame);
CRect rt;
GetClientRect(&rt);
switch (nViewType)
{ case ViewD: //CListPaneView
{
if (!pView->IsKindOf(RUNTIME_CLASS(CViewD)))
{
m_wndSplitter1.DeleteView(1, 0);
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CViewD),
CSize(rt.Width() / 5, rt.Height() / 10), NULL);
m_wndSplitter1.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 0);*/
m_wndSplitter2.DeleteView(1, 0);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CViewD),
CSize(rt.Width() * 4 / 5, rt.Height() / 10), NULL);
m_wndSplitter2.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 1);*/
}
break;
}
case ViewC: //CEditPaneView
{
if (!pView->IsKindOf(RUNTIME_CLASS(CViewC)))
{
//删除旧的视图
m_wndSplitter1.DeleteView(1, 0);
//创建新的视图
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CViewC),
CSize(rt.Width() / 5, rt.Height() / 10), NULL);
//调整分布
m_wndSplitter1.RecalcLayout();
/*m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 0);*/
m_wndSplitter2.DeleteView(1, 0);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CViewB),
CSize(rt.Width() * 4 / 5, rt.Height() / 10), NULL);
m_wndSplitter2.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 1);*/
}
break;
} default:
break;
}}
右下角视图:
void CViewB::OnDraw(CDC* pDC)
{
CKnifeTestDoc *pDoc = (CKnifeTestDoc *)this->GetDocument();
pDC->TextOut(100, 10, pDoc->m_docstr1);
pDC->TextOut(250, 10, pDoc->m_docstr2);
.....
}左下角的视图参数可以保存到doc中,但是右下角视图没有关联到document是哪里出问题了呢?诚心感谢~
void CMainFrame::SwitchToView(int nViewType)
{
CView* pView = (CView*)m_wndSplitter1.GetPane(1, 0);
// CRect rcRight, rcFrame;
// pView->GetClientRect(&rcRight);
// GetClientRect(&rcFrame);
CRect rt;
GetClientRect(&rt);
switch (nViewType)
{ case ViewD: //CListPaneView
{
if (!pView->IsKindOf(RUNTIME_CLASS(CViewD)))
{
m_wndSplitter1.DeleteView(1, 0);
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CViewD),
CSize(rt.Width() / 5, rt.Height() / 10), NULL);
m_wndSplitter1.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 0);*/
m_wndSplitter2.DeleteView(1, 0);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CViewD),
CSize(rt.Width() * 4 / 5, rt.Height() / 10), NULL);
m_wndSplitter2.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 1);*/
}
break;
}
case ViewC: //CEditPaneView
{
if (!pView->IsKindOf(RUNTIME_CLASS(CViewC)))
{
//删除旧的视图
m_wndSplitter1.DeleteView(1, 0);
//创建新的视图
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CViewC),
CSize(rt.Width() / 5, rt.Height() / 10), NULL);
//调整分布
m_wndSplitter1.RecalcLayout();
/*m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 0);*/
m_wndSplitter2.DeleteView(1, 0);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CViewB),
CSize(rt.Width() * 4 / 5, rt.Height() / 10), NULL);
m_wndSplitter2.RecalcLayout();
/* m_pLefBottomView = (CViewC*)m_wndSplitter.GetPane(1, 1);*/
}
break;
} default:
break;
}}
右下角视图:
void CViewB::OnDraw(CDC* pDC)
{
CKnifeTestDoc *pDoc = (CKnifeTestDoc *)this->GetDocument();
pDC->TextOut(100, 10, pDoc->m_docstr1);
pDC->TextOut(250, 10, pDoc->m_docstr2);
.....
}左下角的视图参数可以保存到doc中,但是右下角视图没有关联到document是哪里出问题了呢?诚心感谢~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货