如何用CRichEditCtrl对RTF进行多次write操作?(需要在文件尾添加,而不是清空)
小弟用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




