CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

多文档界面中保存文件遇到的一点问题!100分

楼主sselzu()2005-07-12 19:47:21 在 VC/MFC / 基础类 提问

我在多文档界面中自己定义了一个保存文件的函数,保存时文件名有一点问题,我做的多文档界面文档默认名是ControlFile1,例如我在"保存"对话框中输入文件名test,能保存成功,但保存成功后程序窗口显示的标题仍是ControlFile1,哪位高手能帮一下忙?  
  代码如下:  
  void   CControlView::OnFileSave2()    
  {  
          CFileDialog   dlg(FALSE,"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"控制文件(*.*)|*.*|",NULL);  
    if(dlg.DoModal()==IDOK)  
                    {  
      CCONTROLDoc   *   pDoc=GetDocument();  
      UpdateData(TRUE);  
      CFile   f;  
      VERIFY(f.Open(dlg.GetPathName(),CFile::modeCreate|CFile::modeWrite));  
      CArchive   ar(&f,CArchive::store);  
      GetDlgItem(IDC_EDIT1)->GetWindowText(constr[0]);  
      constr[0]="$PROBLEM   "+constr[0]+"\r\n";    
                      ar.WriteString(constr[0]);  
      constr[1]="$INPUT";  
      if(m_idchk==TRUE)  
    constr[1]=constr[1]+"       ID";  
                      if(m_timechk==TRUE)  
    constr[1]=constr[1]+"   TIME";  
                      if(m_amtchk==TRUE)  
    constr[1]=constr[1]+"   AMT";  
                      if(m_wtchk==TRUE)  
    constr[1]=constr[1]+"   WT";  
                      if(m_apgrchk==TRUE)  
    constr[1]=constr[1]+"   APGR";  
                      if(m_dvchk==TRUE)  
    constr[1]=constr[1]+"   DV";  
      constr[1]=constr[1]+"\r\n";  
                      ar.WriteString(constr[1]);  
                      ar.Close();  
      f.Close();  
    }  
    }  
   
  问题点数:100、回复次数:5Top

1 楼qrlvls( 空 气 )回复于 2005-07-12 20:27:22 得分 0

你可以通过重载   Serialize   来实现Top

2 楼qrlvls( 空 气 )回复于 2005-07-12 20:30:06 得分 20

或者在   f.Close   后添加一句:  
  pDoc->SetPathName(dlg.GetPathName());Top

3 楼sselzu()回复于 2005-07-12 21:18:53 得分 0

楼上的高手,再问你一个问题,如何重载Serialize函数?因为我这个程序确实要重载Serialize函数,但我不会,请指教!Top

4 楼walkersun()回复于 2005-07-12 21:25:50 得分 20

在C**doc类里面有Serialize这个函数Top

5 楼qrlvls( 空 气 )回复于 2005-07-13 11:13:34 得分 60

由于   Serialize   是   CObject   中的一个虚函数  
  函数原型为   void   Serialize(CArchive&);  
  因此你只需要在你的   CxxDocument   中重新实现该函数就可以了  
  你可以简单地把你上面对   ar   的操作部分转移到   Serialize   函数内部就可以了  
  即在.h中  
  virtual   void   CYourDocument::Serialize(CArchive   &ar);  
  在   .cpp   中  
  void   CYourDocument::Serialize(CArchive   &ar)  
  {  
        if   (ar.IsStoring())               //     保存文件  
        {  
      GetDlgItem(IDC_EDIT1)->GetWindowText(constr[0]);  
      constr[0]="$PROBLEM   "+constr[0]+"\r\n";    
                      ar.WriteString(constr[0]);  
      constr[1]="$INPUT";  
      if(m_idchk==TRUE)  
    constr[1]=constr[1]+"       ID";  
                      if(m_timechk==TRUE)  
    constr[1]=constr[1]+"   TIME";  
                      if(m_amtchk==TRUE)  
    constr[1]=constr[1]+"   AMT";  
                      if(m_wtchk==TRUE)  
    constr[1]=constr[1]+"   WT";  
                      if(m_apgrchk==TRUE)  
    constr[1]=constr[1]+"   APGR";  
                      if(m_dvchk==TRUE)  
    constr[1]=constr[1]+"   DV";  
      constr[1]=constr[1]+"\r\n";  
                      ar.WriteString(constr[1]);  
          }  
          else   if   (ar.IsLoading())     //   读取文件  
          {  
                            ...   读取数据  
          }  
  }Top

相关问题

  • 在基于CFormView的多文档界面中如何弹出提示保存文件的消息框?没办法啊,vc太弱了
  • 怎么得到基于单文档的界面文件名?
  • 将主控文档保存到其他文件夹时,子文档为什么没一起保存?
  • 在单文档工界面中文件读取与存储的问题
  • 在WinForm程序中,如何将一个doc文档保存成txt文件?
  • 单文档下,实现打开,保存文本文件的功能。
  • 保存文件
  • 保存文件
  • 100分急问!在基于CFormView的多文档界面中打开文件时遇到的问题.
  • 请问:单文档中如何在退出时去掉弹出的“是否保存文件“消息?

关键词

  • 文档
  • 界面
  • 文件
  • constr
  • 保存
  • 文档界面
  • cfile
  • dlg
  • true

得分解答快速导航

  • 帖主:sselzu
  • qrlvls
  • walkersun
  • qrlvls

相关链接

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

广告也精彩

反馈

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