【MFC多文档】03:文档与视图绑定

本文详细介绍了在MFC框架下实现多文档界面的具体步骤,包括手动添加CNaviMarkView与CNaviMarkDoc类,继承自CFormView与CDocument,并在MainFrm.h中包含这两个头文件。通过在MainFrm.cpp的OnCreate函数中调用CreateNaviMarkDocTemplate函数,创建文档模板。同时,提供了创建视图和显示视图的方法。

问题

如题。

 

解决方法:

1、MFC多文档工程,手动添加CNaviMarkView与CNaviMarkDoc类。

CNaviMarkView继承至CFormView,CNaviMarkDoc继承至CDocument。

 

 

2、在MainFrm.h中包含上述两个头文件。

 

3、在MainFrm.cpp的OnCreate函数中调用CreateNaviMarkDocTemplate()函数,函数定义如下。

void CMainFrame::CreateNaviMarkDocTemplate()
{
	m_pNaviMarkTemplate = new CMultiDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CNaviMarkDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CNaviMarkView));
	theApp.AddDocTemplate(m_pNaviMarkTemplate);
}

 

4、创建视图的方法。

if (GetDlg()->m_pNaviMarkDoc[i] == NULL)
{
	ShowNaviMarkView(i, str);
}
else
{
	pos1 = GetDlg()->m_pNaviMarkTemplate->GetFirstDocPosition();

	while (pos1)
	{
		pDoc = GetDlg()->m_pNaviMarkTemplate->GetNextDoc(pos1);
		if (pDoc == GetDlg()->m_pNaviMarkDoc[i])
		{
			pos2 = pDoc->GetFirstViewPosition();

			if (pos2)
			{
				pView = pDoc->GetNextView(pos2);
				pView->GetParentFrame()->BringWindowToTop();
			}
		}
	}
}

 ShowNaviMarkView()函数定义。

void CMainFrame::ShowNaviMarkView(int nId, CString strTitle)
{
	CMultiDocTemplate		*pDocTemplate;
	CNaviMarkDoc			*pDoc;
	CFrameWnd				*pFrame;
	
	//创建文档及视图
	pDocTemplate = GetDlg()->m_pNaviMarkTemplate;
	pDoc = (CNaviMarkDoc *)pDocTemplate->CreateNewDocument();
	GetDlg()->m_pNaviMarkDoc[nId] = pDoc;
	ASSERT_VALID(pDoc);

	//传递数据
	pDoc->m_nId = nId;
	pDoc->m_strTitle = strTitle;
	pFrame = pDocTemplate->CreateNewFrame(pDoc, NULL);
	ASSERT_VALID(pFrame);

	pDoc->OnNewDocument();
	pDocTemplate->InitialUpdateFrame(pFrame, pDoc, true);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值