我用断点的方法找出下面***处出现咯问题,运行的时候弹出来一个错误对话框说的“一未命名文件 格式错”···我试咯好久都没有结果的···麻烦各位高手帮帮我这个可怜的初学者吧···先谢谢你们咯··void CTextView::OnFileOpen() 
{ // TODO: Add your command handler code here CFileDialog mydlg(TRUE,"TXT");
mydlg.DoModal();
filename=mydlg.GetPathName();
CFile myfile;
myfile.Open(filename,CFile::modeRead);  
CArchive ar(&myfile,CArchive::load);

*** Serialize(ar);//问题就出于此,但是我不知道怎么改才行(我分析可能是不是没有到底指定哪一个View进行Serialize操作·)
ar.Close();
myfile.Close();
CDocument*pDoc=GetDocument();
pDoc->SetTitle(filename);
}

解决方案 »

  1.   

    你这样是调用了CView类的Serialize函数,自然要出错,除非你重载了这个函数来读取。序列化要你自己实现读取/写入的代码,在哪里呢?所以你这个地方不需要用CArchive,直接分配一个内存用CFile来读取就行了。
      

  2.   

    Mackz jameshooo greatws 在吗?能浏览一下我发给你们的信件吗????
      

  3.   

    其实你这个程序如果是用MFC的文档/视图框架的话,根本不需要自己来处理打开文件的代码,也就是说不需要CTextView::OnFileOpen()函数,框架自己会处理打开文件的命令,然后你只需要在CTextDocument::Serialize()中进行读取/写入就可以了。
      

  4.   

    但是我这个框架里面有多个不同类型的View有些是打开BMP视图文件有些则是打开txt文件(基类分别是CScrollView和CEditView),不同的View点击打开时的的格式或情形都有不一样的嘛,所以不能用默认打开的啊·
      

  5.   

    不同视图绑定不同文档类,其他不用管。打开/读写文件就应该是文档类的事,要用MFC框架就要搞清楚其各个类的功能。当然,你执意要自己处理我也没办法,前面说了,自己用CFile类读取也是可以的。