可切换视图的单文档静态分割窗口总结[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 pzhongqi 的 blog

    // 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); 
}

本文关键:可切换视图的单文档静态分割窗口总结
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top