// set flag so that document will not be deleted when view is destroyed
pdoc->m_bautodelete=false;
// delete existing view
((cview *) getpane(row,col))->destroywindow();
// set flag back to default
pdoc->m_bautodelete=true;
// create new view
context.m_pnewviewclass=pviewclass;
context.m_pcurrentdoc=pdoc;
context.m_pnewdoctemplate=null;
context.m_plastview=null;
context.m_pcurrentframe=null;
createview(row,col,pviewclass,size, &context);
cview * pnewview= (cview *)getpane(row,col);
if (bsetactive==true)
getparentframe()->setactiveview(pnewview);
recalclayout();
getpane(row,col)->sendmessage(wm_paint);
return true;
}
10,在mainfrm.cpp前边加上
#include "appdoc.h"
#include "tview.h"
#include "myview.h"
#include "fview.h"
在mainfrm.cpp 中编辑虚拟函数bool cmainframe::oncreateclient如下
bool cmainframe::oncreateclient(lpcreatestruct /*lpcs*/,
ccreatecontext* pcontext)
{
if (!m_wndsplitter.createstatic(this,1,2))
{
trace(_t("failed to create the splitter"));
return false;
}
if (!m_wndsplitter.createview(0,0,runtime_class(ctview),csize(100,100),pcontext))
{
trace(_t("failed to create view in first pane"));
return false;
}
if (!m_wndsplitter.createview(0,1,runtime_class(cmyview),csize(100,100),pcontext))
{
trace(_t("failed to create view in second pane"));
return false;
}
return true;
}
11,加入两个菜单项id_view_view和id_view_fview分别对应两个视图,在mainfrm.h中加入成员变量
bool showview1; 在cmainframe::oncreate中return 0;前边加上一行showview1=true;
编辑两个菜单项代码如下
void cmainframe::onviewview()
{
// todo: add your command handler code here
cmainframe *pmainframe=(cmainframe*)afxgetmainwnd();
pmainframe->m_wndsplitter.replaceview(0,1,runtime_class(csplview),csize(100,100));
showview1=true;
}
void cmainframe::onviewfview()
{
// todo: add your command handler code here
cmainframe *pmainframe=(cmainframe*)afxgetmainwnd();
pmainframe->m_wndsplitter.replaceview(0,1,runtime_class(cfview),csize(100,100));
showview1=false;
}
void cmainframe::onupdateviewview(ccmdui* pcmdui)
{
// todo: add your command update ui handler code here
pcmdui->setcheck(showview1);
}