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

如何用CRichEditCtrl对RTF进行多次write操作?(需要在文件尾添加,而不是清空)

楼主songfen8432(songfen8432)2004-09-02 09:53:42 在 VC/MFC / 基础类 提问

小弟用CRichEditCtrl的StreamOut函数写RTF文档,需要在文件尾添加,而不是清空。  
  可是CFile::modeNoTruncate   |   CFile::modeCreate   |   CFile::modeWrite没有效果,  
  多次对同一文件用CRichEditCtrl::StreamOut也不行,各位大虾帮忙看看吧:  
   
  //   Use   ES_MULTILINE   to   write   multi   line   in   file  
  CRichEditCtrl   rtfCtrl;  
  rtfCtrl.Create(WS_CHILD   |   WS_DISABLED   |   ES_MULTILINE,   CRect(10,10,10,20),   \  
  m_pMainFrame,   1);  
   
  //   How   to   append   file?  
  //   CFile::modeNoTruncate   has   no   effect   in   this   case.  
  //   Maybe   StreamOut   will   empty   file.  
          CString   str   =   _T("Try   and   \r\n   Test");  
  rtfCtrl.SetWindowText(str);  
   
  CFile   cFile;  
  CFileException   ex;  
   
  if   (!cFile.Open(TEXT("d:\\TestRTF.rtf"),   CFile::modeNoTruncate   |   \  
  CFile::modeCreate   |   CFile::modeWrite,   &ex))  
  {  
  TCHAR   szCause[255];  
  CString   sError;  
   
  ex.GetErrorMessage(szCause,   255);  
  sError   =   _T("The   error   is   caused   by   ");  
  sError   +=   szCause;  
   
  AfxMessageBox(sError);  
  return;  
  }  
   
  EDITSTREAM   es;  
  es.dwCookie   =   (DWORD)   &cFile;  
  es.pfnCallback   =   MyStreamOutCallback;    
   
  rtfCtrl.StreamOut(SF_RTF,   es);  
   
  /*               如果这段注释加上,RTF文档还是没有写上Nice  
  rtfCtrl.SetWindowText("Nice");  
  es.dwCookie   =   (DWORD)   &cFile;  
  es.pfnCallback   =   MyStreamOutCallback;    
  rtfCtrl.StreamOut(SF_RTF,   es);  
  */  
   
  cFile.Close(); 问题点数:50、回复次数:5Top

1 楼songfen8432(songfen8432)回复于 2004-09-02 09:54:04 得分 0

先谢谢了Top

2 楼lanstar200(待我景天大侠斩妖除魔)回复于 2004-09-02 09:57:56 得分 50

File   Write之前先Seek(   0   ,   CFile::end);Top

3 楼lanstar200(待我景天大侠斩妖除魔)回复于 2004-09-02 09:59:12 得分 0

或者cFile.SeekToEnd();Top

4 楼autoegg(哲学指引生活 && (动心忍性,增益其所不能))回复于 2004-09-02 10:17:47 得分 0

“玛雅哥布林”是说在StreamOut之前做cFile.SeekToEnd();吗?  
  试过了,没有效果。:(Top

5 楼crystal521(【云淡风轻】)回复于 2004-10-08 17:11:37 得分 0

在文本末尾写文字  
  void   CRichEditUseDoc::OnTextWriteafter()    
  {  
  CString   str;  
  int   nTextLength;  
   
  CRichEditView   *pView   =   GetView();  
  CRichEditCtrl   &edit   =   pView->GetRichEditCtrl();  
   
  //要写的内容为ABCDEFG  
  str   =   "ABCDEFG";  
  //加入换行  
  str   +=   "\r\n";  
  //获得文字的长度  
  nTextLength   =   edit.GetWindowTextLength();  
  //将光标放在文本最末  
  edit.SetSel(nTextLength,   nTextLength);  
  //写入文本  
  edit.ReplaceSel(str);  
  }  
  Top

相关问题

  • VFP问题,SKIP----已到文件尾
  • 求教,关于文件尾的判断
  • 关于文件尾的问题?
  • 如何判断读到文件尾了????
  • 我的!feof(fp)为什么读不到文件尾?
  • ifstream::eof(),可以测试是否到达文件尾吗?
  • CFile 如何判断文件指针指向文件尾部??
  • 关于文件尾的判断,一个简单的问题。
  • 什么是"输入超出了文件尾 "
  • c语言中测试文件尾的函数是不是eof() ?

关键词

  • 文本
  • cfile
  • rtfctrl
  • rtf
  • ntextlength
  • streamout
  • szcause
  • serror
  • modenotruncate
  • es

得分解答快速导航

  • 帖主:songfen8432
  • lanstar200

相关链接

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

广告也精彩

反馈

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