读书人

关于MDI多框架。文件打开报错

发布时间: 2012-09-14 11:53:44 作者: rapoo

求助:关于MDI多框架。文件打开报错
先简单介绍下情况: 这个开发包括几个部分内容。最先开发好了一个部分。已经可以使用。现在开发下一部分。但是添加新框架、文档。然后打开文件总是失败。

我的App类:
CMultiDocTemplate* pDocHelloTemplate;
pDocHelloTemplate = new CMultiDocTemplate(
IDR_HELLO,
RUNTIME_CLASS(CHelloDoc),
RUNTIME_CLASS(CMDIChildWndEx), // custom MDI child frame
RUNTIME_CLASS(CHelloView));
if (!pDocHelloTemplate)
return FALSE;
AddDocTemplate(pDocHelloTemplate);
pDocHelloTemplate->OpenDocumentFile(NULL);
////第一个是一开始给出欢迎界面
//下面为第一部分程序。完好,正确的。
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_YisoucTYPE,
RUNTIME_CLASS(CYisoucDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CYisoucView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);

//
// 下面为下一部分的
//
CMultiDocTemplate* pDocTemplate2;
pDocTemplate2 = new CMultiDocTemplate(IDR_BUSSTOP,
RUNTIME_CLASS(CBusstopDoc),
RUNTIME_CLASS(CMDIChildWndEx), // 自己也创建过基于CMDIChildWndEx的框架类,但总报错为打开空文档失败。原因为loadFrame失败。错误产生地:m_pfnCreateObject为空值
RUNTIME_CLASS(CBusstopView));
if (!pDocTemplate2)
return FALSE;
AddDocTemplate(pDocTemplate2);



//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////下面为打开文件部分///////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
CFileDialog *lpszOpenFile; //定义一个CfileDialog对象
lpszOpenFile = new
CFileDialog(true,_T(""),_T(""),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,_T("文件类型(*.mdb)|*.mdb||"));//生成一个对话框  
if(lpszOpenFile->DoModal()==1) //假如点击对话框确定按钮
{
CString szGetName;
szGetName=lpszOpenFile->GetPathName();
POSITION curTemplatePos = GetFirstDocTemplatePosition();
CString fileExt=lpszOpenFile->GetFileExt();
while(curTemplatePos != NULL)
{
CDocTemplate* curTemplate =
GetNextDocTemplate(curTemplatePos);
CString str;
curTemplate->GetDocString(str, CDocTemplate::docName);
if(str == _T("Busstop"))////////////文档类型正确
{
curTemplate->OpenDocumentFile(szGetName);//也能选择正确的文档模板去创建
/////////////////////////打开的时候总是出错。跟踪到最后,还是loadFrame出错。

return;
}
}
}
delete lpszOpenFile;//释放分配的对话框


//////////////////////////////////////////////////////////////////////////////////////
///////////////也在.rc资源文件中添加了 文档关联类型////////////////
////////////////////////
STRINGTABLE
BEGIN
IDR_BUSSTOP "\nBusstop\nBusstop\nMDB File (*.mdb)\n.mdb\nBusstop.Document\nBusstop Document"
END



////////////////////////////
求助啊!!!!!!!!!!!!!!!!!!!!!!!!!!!

三天了。没日没夜。跟踪的原因、错误都是在MFC内部文件发生,肯定是不能乱改内部文件。而且我也不太懂内部发生。

求高手给出解决方法

[解决办法]
CMDIChildWndEx类,你是不是忘了加MFC的宏了?

DECLARE_DYNCREATE(CChildFrame***)

IMPLEMENT_DYNCREATE(CChildFrame***, CMDIChildWnd)
[解决办法]
问题解决了?

RUNTIME_CLASS(CHelloDoc),
RUNTIME_CLASS(CMDIChildWndEx), // 多文档我一般都绑一个
RUNTIME_CLASS(CHelloView));

读书人网 >VC/MFC

热点推荐