CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

多文档/视图中激活不同视图的问题

楼主sietlkj(我心已死)2002-03-06 08:49:43 在 VC/MFC / 基础类 提问

请问:在MFC的多文档/视图结构中,新增加了一个或几个同文档的视,在程序运行时,通过执行菜单命令调用不同的视。现在问题是:当用户执行某菜单命令,需要某一特定的视时,程序如何判断该视已经被打开了一份,从而直接将该视直接激活而不重新打开一个新的视图?注:现有我已经编写的菜单命令中程序代码均仿照File/New程序代码,故只能新开视窗口而无法激活已有的视。谢谢各位了!我将提供我所能提供的最大分值做为报酬。 问题点数:100、回复次数:9Top

1 楼sietlkj(我心已死)回复于 2002-03-06 09:16:56 得分 0

各位帮帮忙啊!给各位作揖了.Top

2 楼sietlkj(我心已死)回复于 2002-03-06 09:16:56 得分 0

各位帮帮忙啊!给各位作揖了.Top

3 楼sietlkj(我心已死)回复于 2002-03-06 09:17:55 得分 0

各位帮帮忙啊!给各位作揖了.Top

4 楼howard(舍.得.)回复于 2002-03-06 09:20:04 得分 10

CDocument   *pDoc=GetActiveDocument();  
  CView   *pOldView=GetActiveView();  
  CView   *pNewView=(CView*)new   CFormSupplyView;  
  pNewView->Create(NULL,"Fac",AFX_WS_DEFAULT_VIEW,  
  rectDefault,this,AFX_IDW_PANE_FIRST,NULL);  
  pNewView->OnInitialUpdate();  
  pNewView->ShowWindow(SW_SHOW);  
  pOldView->ShowWindow(SW_HIDE);  
  pDoc->AddView(pNewView);  
  pDoc->RemoveView(pOldView);  
  SetActiveView(pNewView);  
  RecalcLayout();  
  Top

5 楼sietlkj(我心已死)回复于 2002-03-06 09:31:51 得分 0

对不起,如果已经启动了该视,上面那一句是判断其是否存在,并将其激活的?能否详细说明,谢了!  
  pNewView->     Create(NULL,"Fac",AFX_WS_DEFAULT_VIEW,  
              rectDefault,this,AFX_IDW_PANE_FIRST,NULL);  
  pNewView->     OnInitialUpdate();  
  这两句是重新声称新的视图吗?  
  Top

6 楼howard(舍.得.)回复于 2002-03-06 09:37:04 得分 0

这样,   if(pNewView->GetSafeHand()==NULL)  
                Create(...);  
                pNewView->OninitalUpdateTop

7 楼howard(舍.得.)回复于 2002-03-06 09:38:43 得分 0

判断if(pNewView->GetSafeHand()==NULL)我是猜测的,没有测试Top

8 楼cajon(峡谷泥)回复于 2002-03-06 09:49:42 得分 90

建议你每次打开一个新的视图的时候,将他的指针保存起来,然后每次只需要判断相应的指针是否为空,附带判断GetSafeHwnd()是否为NULL,不就行了!  
  例如:  
  pView1,   pView2,   pView3等等  
  记住要在构造函数里将他们头赋值为NULL;  
  建立第一个视图时,pView1   =   新建的视图,  
  if   (pView1   ==   NULL   ||   pView1->GetSafeHwnd()   ==   NULL)  
      create(...);  
  else  
      激活pView1;  
   
  在有!视图关闭时,需要将相应的指针赋为空!否则会报错!Top

9 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-03-06 10:11:39 得分 0

VWRPLC32   Replacing   a   View   in   a   CMDIChildWnd   Window    
   
  Q141499  
   
   
  --------------------------------------------------------------------------------  
  The   information   in   this   article   applies   to:  
   
  The   Microsoft   Foundation   Classes   (MFC),   used   with:  
  Microsoft   Visual   C++,   32-bit   Editions,   versions   4.0,   4.1,   4.2,   5.0,   6.0  
   
  --------------------------------------------------------------------------------  
  This   is   the   32-bit   version   of   this   sample.  
  How   to   Replace   a   View   in   a   Splitter   Window    
   
  Q149257  
   
   
  --------------------------------------------------------------------------------  
  The   information   in   this   article   applies   to:  
   
  The   Microsoft   Foundation   Classes   (MFC),   used   with:  
  Microsoft   Visual   C++,   32-bit   Editions,   version   4.0  
  VSWAP32   Demos   Multiple-View   Switching   in   SDI    
   
  Q141334  
   
   
  --------------------------------------------------------------------------------  
  The   information   in   this   article   applies   to:  
   
  The   Microsoft   Foundation   Classes   (MFC),   used   with:  
  Microsoft   Visual   C++,   32-bit   Editions,   versions   4.0,   4.1    
  Microsoft   Visual   C++,   32-bit   Enterprise   Edition,   version   4.2    
  Microsoft   Visual   C++,   32-bit   Professional   Edition,   version   4.2    
  Microsoft   Visual   C++,   32-bit   Enterprise   Edition,   version   5.0    
  Microsoft   Visual   C++,   32-bit   Professional   Edition,   version   5.0    
  Microsoft   Visual   C++,   32-bit   Enterprise   Edition,   version   6.0    
  Microsoft   Visual   C++,   32-bit   Professional   Edition,   version   6.0    
  Microsoft   Visual   C++,   32-bit   Learning   Edition,   version   6.0Top

10 楼sietlkj(我心已死)回复于 2002-03-06 10:47:12 得分 0

Thanks!   If   pass,   I   will   give   you   the   fens   at   once.Top

相关问题

  • 文档/视图
  • 在MFC中多文档的程序中,有多个视图,我通过什么代码来激活某个视图呢
  • 在文档/视图结构中如何保存不同类型的数据?
  • 怎样在不同文档模板间的视图间传递数据?
  • 怎样根据视图有没有文档来执行不同的代理?
  • 如何在视图中统计不同表单创建的文档个数?
  • MFC中是否能给同一个文档加入不同的视图?
  • 如何解决两个不同的视图对应同一个文档,其中一个视图下的菜单命令不能响应。
  • 视图中,点击不同文档(不打开)刷新界面,可以做到吗?
  • 如何在多文档程序中实现不同形式的视图?请高手出手相助!

关键词

  • 32-bit
  • visual c++
  • 视图
  • 文档
  • 指针
  • visual
  • mfc
  • view
  • microsoft
  • article

得分解答快速导航

  • 帖主:sietlkj
  • howard
  • cajon

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo