VC中实现单文档切换多视图的方法
来源:互联网 发布:sqlserver价格 编辑:程序博客网 时间:2024/06/05 05:50
先在CMainFrame中包含原来系统生成的视图类
#include "****View.h"
注:当你包含系统生成的视图类的头文件时,要把原视图中的GetDocument()函数删去,否则会报错
然后在CMainFrame类中声名一个该类的实例以保存系统原来的视图
protected:
C****View m_pOldView;
这时用类向导新建一个类,基类可以指定为CView;
注:在派生的类中,一定要把构造函数从 protected 改成 public
如果你要使用几个视图就新建几个类
再在CMainFrame类中包含该类的头文件
#include "NewView.h"
再在类中声明一个该类的实例
CNewView *m_pNewView;
在CMainFrame的构造函数中初始化
m_pOldView=NULL;
m_pNewView=NULL;
因为在CMainFrame的构造函数和OnCreate函数中,视图还没有建立
所以原来的视图可以在切换视图时保存
if(m_pOldView==NULL)
m_pOlView=(C****View*)GetActiveView();
或者可以在原来的视图里保存,在原来的视图类中包含CMainFrame的头文件
#include "MainFrame.h"
然后在原来的视图的视图中用类向导添加一个虚函数OnInitialUpdate,然后在此函数中保存
CMainFrame *pMainWnd=(CMainFrame*)AfxGetMainWnd();
pMainWnd->m_pOldView=this;
切换视图时,由于该视图还没有建立所以用到下面的语句
if(m_pNewView==NULL)
{
CCreateContext context;
context.m_pCurrentDoc=pOldActiveView->GetDocument();
m_pNewView=new CNewView;
m_pNewView=new CNewView;
m_pNewView->Create(NULL,NULL,WS_BORDER|WS_CHILD,CFrameWnd::rectDefault,this,IDV_NEW_VIEW_ID,&context);
pNewActiveView->OnInitialUpdate(); //IDV_NEW_VIEW_ID是这个视图的ID,这个值可以是常数,如 1,或者在资源视图的String Table中设置,如设为:IDV_NEW_VIEW_ID;
}
切换视图时用下面语句,可以在CMainFrame中设立一个标记,切换视图时检查是否已经切换到这个视图,否则就切换,如果要切换到原来的视图,把m_pNewView换成m_pOldView
SetActiveView(m_pNewView);
m_pNewView->ShowWindow(SW_MAXIMIZED);
m_pOldView->ShowWindow(SW_HIDE);
m_pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
- VC中实现单文档切换多视图的方法
- VC单文档实现多视图的方法
- VC单文档实现多视图的方法
- VC单文档实现多视图的方法
- VC单文档切换多视图
- VC 单文档方式下多视图的实现及自由切换
- VC的MDI中实现动态切换文档视图
- VC小技巧(6)-----单文档多视图实现视图间的切换
- 单文档多视图的实现方法
- 单文档多视图切换方法
- 单文档多视图切换方法
- 使用VC创建单文档,并实现视图切换
- vc中单文档程序切换不同视图
- vc中单文档多视图
- 单文档多视图切换的解决办法
- 单文档多视图切换的解决办法
- 单文档多视图切换的解决办法
- 单文档多视图切换的解决办法
- 毕业典礼:从这里出发
- 任意改变CDateTimeCtrl控件的显示格式
- oracle 高效分页
- VC++ 获取窗体句柄,并发送键盘消息(这种方法也可以打开某些应用程序)
- STL系列之五 priority_queue 优先队列
- VC中实现单文档切换多视图的方法
- 检查获得的消息 当某个操作没有得到要求时,可以取消这次消息
- 当程序到改变到指定大小时,禁止再改变起大小
- SQL中遇到多条相同内容只取一条的最简单实现
- 让 UILabel 垂直方向顶端对齐的代码
- 如何去掉字符串最外层的双引号,使其变成数组.
- Tokyo Cabinet TC 源码学习笔记
- 只使程序只运行一次
- RDLC打印