我建了一个单文档程序,首先通过文档关联了两个视图,可以互相切换。
然后我把第一个视图View1即当前活动视图用CSplitterWnd分割为一行两列(在MainFrame的OnCreateClient中)。
最后我想把当前处于隐藏状态的另一个视图View2分割为两行一列,还是在OnCreateClient中,结果还是分割的还是当前活动视图View1。
无论怎样都无法分割另一个视类,请问是不是实现不了?如果可以,怎样实现呢?
不知道我说清楚没有啊?
请高手来答疑解惑!
谢谢
然后我把第一个视图View1即当前活动视图用CSplitterWnd分割为一行两列(在MainFrame的OnCreateClient中)。
最后我想把当前处于隐藏状态的另一个视图View2分割为两行一列,还是在OnCreateClient中,结果还是分割的还是当前活动视图View1。
无论怎样都无法分割另一个视类,请问是不是实现不了?如果可以,怎样实现呢?
不知道我说清楚没有啊?
请高手来答疑解惑!
谢谢
那切换视后就无法再进行分割了,是不是这样?
如果可以的话,可否提示一下该怎么做?
#include "ViewTwo.h"
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
m_wndSplitter1 = new CSplitterWnd();
BOOL bCreateSpltr = m_wndSplitter1->CreateStatic( this, 1, 2); m_wndSplitter1->CreateView(0, 0, RUNTIME_CLASS(CViewOne), CSize(100,100), pContext);
m_wndSplitter1->CreateView(0, 1, RUNTIME_CLASS(CViewOne), CSize(100,100), pContext); return bCreateSpltr;
}void CMainFrame::OnChangeview()
{
bchange = !bchange; bchange ? SetViewTwo() : SetViewOne();
}void CMainFrame::SetViewOne()
{
m_pNewView = RUNTIME_CLASS(CViewOne);
Context.m_pNewViewClass = m_pNewView;
Context.m_pCurrentFrame = this;
Context.m_pCurrentDoc = GetActiveDocument();
CView *pNewView = STATIC_DOWNCAST(CView, CreateView(&Context));
if(pNewView != NULL)
{
if(NULL == m_wndSplitter1) m_wndSplitter1 = new CSplitterWnd();
if(m_wndSplitter1->CreateStatic( this, 1, 2))
{
m_wndSplitter1->CreateView(0, 0, RUNTIME_CLASS(CViewOne), CSize(300,0), &Context);
m_wndSplitter1->CreateView(0, 1, RUNTIME_CLASS(CViewOne), CSize(0,0), &Context);
}
pNewView->OnInitialUpdate();
pNewView->ShowWindow(SW_SHOW);
SetActiveView(pNewView);
RecalcLayout();
m_wndSplitter2->DestroyWindow();
m_wndSplitter2 = NULL;
}
}void CMainFrame::SetViewTwo()
{
m_pNewView = RUNTIME_CLASS(CViewTwo);
Context.m_pNewViewClass = m_pNewView;
Context.m_pCurrentFrame = this;
Context.m_pCurrentDoc = GetActiveDocument();
CView *pNewView = STATIC_DOWNCAST(CView, CreateView(&Context));
if(pNewView != NULL)
{
if(NULL == m_wndSplitter2) m_wndSplitter2 = new CSplitterWnd();
if(m_wndSplitter2->CreateStatic( this, 1, 2))
{
m_wndSplitter2->CreateView(0, 0, RUNTIME_CLASS(CViewTwo), CSize(300,0), &Context);
m_wndSplitter2->CreateView(0, 1, RUNTIME_CLASS(CViewTwo), CSize(0,0), &Context);
}
pNewView->OnInitialUpdate();
pNewView->ShowWindow(SW_SHOW);
SetActiveView(pNewView);
RecalcLayout();
m_wndSplitter1->DestroyWindow();
m_wndSplitter1 = NULL;
}
}