MFC 单文档多视图实现(不是完全原创的,但是也不是直接转的,核心看法原创)

本文档介绍如何在MFC应用中实现单文档多视图功能,重点在于消息映射、ID定义和CCreateContext的使用。通过ON_COMMAND消息映射处理ID_CHANG事件,利用#define IDW_PANE_SECOND_MY 32779定义唯一视图ID,避免冲突。关键在于CCreateContext,它用于关联创建的视图与文档,实现视图间的切换。代码部分内容来源于他人,如涉及侵权,请告知调整。
摘要由CSDN通过智能技术生成

下面是在主要实现代码和注释

CView *pOldView  = GetActiveView();//获得活动视图
	ASSERT(pOldView);
	CView *pNewView = NULL;
	if(pOldView->IsKindOf(RUNTIME_CLASS(CCSigleTest1View)))//当前活动视图是默认的视图
	{
		pNewView == (CView *)GetDlgItem(IDW_PANE_SECOND_MY);
		if(pNewView == NULL)
		{
			//创建
			pNewView = (CView *)(RUNTIME_CLASS(CMyView)->CreateObject());//创建对象用New关键字也可以
			if(pNewView == NULL)
			{
				return;
			}
			CCreateContext context;//视图窗口上下文——用于将文档与新创建的视图关联,没有文档没法创建视图
			context.m_pCurrentDoc = pOldView->GetDocument();
			pNewView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,CRect(0,0,0,0),this,IDW_PANE_SECOND_MY,&context);
			pNewView->OnInitialUpdate();
		}
	}
	//要显示的视图必须设置ID=AFX_IDW_PANE_FIRST
	//不需要显示的视图设置为其它即可
	pNewView = (CView *)GetDlgItem(IDW_PANE_SECOND_MY);
	SetActiveView(pNewView);//设置当前活动视图——很重要
	pNewView->ShowWindow(SW_SHOW);//显示视图、隐藏旧
	pOldView->ShowWindow(SW_HIDE);
	p
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值