CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎么用MDI程序中的Serialize写文件?发现很奇怪的现象!

楼主rmryt(小R在线)2005-04-01 21:52:52 在 VC/MFC / 基础类 提问

比如用   MFC   的   Wizard   建立一个   MyClass   的   MDI   应用程序。  
  里面会有一个   CMyClassDoc   和   CMyClassView   的类,对应每个子窗口的文档类和视图类。  
  其中   MyClassDoc.cpp   里面有个   Serialize   函数,对应着程序打开文件和保存文件的代码。  
   
  void   CMyClassDoc::Serialize(CArchive&   ar)  
  {  
  if   (ar.IsStoring())  
  {  
  //   TODO:   add   storing   code   here  
  }  
  else  
  {  
  //   TODO:   add   loading   code   here  
  }  
  }  
   
  但是我不是用   ar<<   这样的方法写文件。我的方法如下:  
   
  CFile   *   pFile   =   ar.GetFile();  
  char   filePath[256];  
  strcpy(filePath,   pFile->GetFilePath());  
   
  这样知道了文件路径,就用另一个类的成员函数写文件:  
  pDib->SaveFile(filePath);  
   
  其中   CDib   *   pDib   是在   CMyClassDoc.h   中声明   pDib   为   CMyClassDoc的私有成员。  
   
  pDib->LoadFile(filePath);是用来读文件,操作无误。  
  但是SaveFile写文件时发现一个奇怪的现象:  
   
  我用CFile写文件,函数的最后一句是MessageBox("!");它前一句是file.Close();  
  因此我可以看到写完后的文件,和期望准确无误。  
  但是一点击OK,也就是这样这个函数彻底结束了,那个写好的文件就变成0字节了。  
  我觉得很奇怪,莫非Serialize还涉及到什么别的操作,为什么把写好的文件截成0字节??  
   
  请赐教,谢谢! 问题点数:60、回复次数:2Top

1 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-04-01 22:33:23 得分 60

 
  BOOL   CDocument::OnSaveDocument(LPCTSTR   lpszPathName)  
   
  在Serialize后会执行以下语句,导致重新写入文件  
  saveArchive.Close();  
  ReleaseFile(pFile,   FALSE);Top

2 楼rmryt(小R在线)回复于 2005-04-02 03:34:00 得分 0

那该怎么办呢?加了派生类的这个函数  
  BOOL   CMyClassDoc::OnSaveDocument(LPCTSTR   lpszPathName)    
  {  
          //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
          return   CDocument::OnSaveDocument(lpszPathName);  
  }  
  把   return   CDocument::OnSaveDocument(lpszPathName);   这一句改为  
  return   TRUE;   想屏蔽那个函数,结果连保存文件的方法都不执行了,怎么回事啊?Top

相关问题

  • win98的奇怪文件
  • 奇怪的文件名
  • oracle下的奇怪文件?
  • 奇怪的文件 qpmd8377.bin
  • 读文件的问题,真是奇怪
  • 一个奇怪的vb文件问题
  • 读取文件疑问,真奇怪!!
  • 奇怪的文件路径问题
  • 系统目录下的奇怪文件
  • 头文件inlude不上?奇怪???

关键词

  • 文件
  • 函数
  • code
  • cmyclassdoc
  • onsavedocument
  • lpszpathname
  • serialize
  • 奇怪
  • pdib
  • cdocument

得分解答快速导航

  • 帖主:rmryt
  • vcmute

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo