CRichEditCtrl读取RTF文件问题 高手请进,高分求助!
使用StreamIn读取RTF文件,可以获得由格式的文本,但是无法获得RTF中包括的图片,而是用word打开rtf文件就没问题
最让我崩溃的是
在RichEditView中就没问题,彻底无语了
下面是CRiceeditView里可用的代码
oid CRichEgView::OnReadin()
{
CString sWriteText; //Where the text will be streamed from
sWriteText="";
CFileDialog cFileDlg(TRUE,NULL,NULL,OFN_READONLY,"rtf file (*.rtf)|*.rtf");
if(cFileDlg.DoModal()==IDOK)
{
CFile cFile(cFileDlg.GetPathName(), CFile::modeRead);
UINT len= cFile.GetLength()+10;
cFile.Read(sWriteText.GetBufferSetLength(len),len);
EDITSTREAM es;
es.dwCookie = (DWORD)&sWriteText; // Pass a pointer to the CString to the callback function
es.pfnCallback = MEditStreamInCallback; // Specify the pointer to the callback function
GetRichEditCtrl().StreamIn(SF_RTF,es); // Perform the streaming
}
}
下面是richeditctrl中不可用的代码
CStringA strRTF(strRTFW.GetString()) ;
EDITSTREAM es;
es.dwError = 0;
es.pfnCallback = CStringFormatToRTF;
es.dwCookie = (DWORD) &strRTF;
StreamIn(SF_RTF|SFF_SELECTION, es);
两个回调函数名字不同代码完全一致
DWORD CALLBACK CYMsgRichEditCtrl::CStringFormatToRTF(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CStringA *psBuffer = (CStringA *)dwCookie;
if (cb > psBuffer->GetLength()) cb = psBuffer->GetLength();
for (int i=0;i<cb;i++) {
*(pbBuff+i) = psBuffer->GetAt(i);
}
*pcb = cb;
*psBuffer = psBuffer->Mid(cb);
return 0;
}
我就不明白了
为什么使用dialog就不能显示图像呢? 这个问题困扰我好几天了,哪位大哥帮我搞定,再开贴给200分都没问题!
最让我崩溃的是
在RichEditView中就没问题,彻底无语了
下面是CRiceeditView里可用的代码
oid CRichEgView::OnReadin()
{
CString sWriteText; //Where the text will be streamed from
sWriteText="";
CFileDialog cFileDlg(TRUE,NULL,NULL,OFN_READONLY,"rtf file (*.rtf)|*.rtf");
if(cFileDlg.DoModal()==IDOK)
{
CFile cFile(cFileDlg.GetPathName(), CFile::modeRead);
UINT len= cFile.GetLength()+10;
cFile.Read(sWriteText.GetBufferSetLength(len),len);
EDITSTREAM es;
es.dwCookie = (DWORD)&sWriteText; // Pass a pointer to the CString to the callback function
es.pfnCallback = MEditStreamInCallback; // Specify the pointer to the callback function
GetRichEditCtrl().StreamIn(SF_RTF,es); // Perform the streaming
}
}
下面是richeditctrl中不可用的代码
CStringA strRTF(strRTFW.GetString()) ;
EDITSTREAM es;
es.dwError = 0;
es.pfnCallback = CStringFormatToRTF;
es.dwCookie = (DWORD) &strRTF;
StreamIn(SF_RTF|SFF_SELECTION, es);
两个回调函数名字不同代码完全一致
DWORD CALLBACK CYMsgRichEditCtrl::CStringFormatToRTF(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CStringA *psBuffer = (CStringA *)dwCookie;
if (cb > psBuffer->GetLength()) cb = psBuffer->GetLength();
for (int i=0;i<cb;i++) {
*(pbBuff+i) = psBuffer->GetAt(i);
}
*pcb = cb;
*psBuffer = psBuffer->Mid(cb);
return 0;
}
我就不明白了
为什么使用dialog就不能显示图像呢? 这个问题困扰我好几天了,哪位大哥帮我搞定,再开贴给200分都没问题!
...全文
相关推荐
VC中RichEdit读取保存rtf文件
例如: ```cpp CRichEditCtrl richEdit; richEdit.LoadFile("path_to_your_rtf_file.rtf"); ``` 这将把RTF文件的内容加载到
实现WTL CRichEditCtrl类的序列化功能
本文还有配套的精品资源,点击获取 简介:在Windows编程中,WTL库提供了一种访问Windows API的方式,其中CRichEditCtrl类负责实现富文本编辑功能。由于缺乏原生序列化支持,需扩展CRichEditCtrl以加入文件保存与读取能力。本实现方法将引导开发者通过继承CRichEditCtrl并添加特定成员函数来实现RTF格式的序列化与反序列化。同时,使用文...
MFC如何读取rtf文件并进行展示
首先,要在MFC应用程序中读取和展示RTF文件,需要了解MFC中的一些类和控件,尤其是CEdit和CRichEditCtrl类。
如何向WTL CRichEditCtrl类添加序列化支持
对于CRichEditCtrl,这通常意味着将富文本内容保存为RTF(Rich Text Format)或纯文本文件,然后在需要时读取这些文件并恢复到编辑控件中。下面是一个可能的实现方法:1.
CRichEditCtrl使用例子
在提供的压缩包文件中,"应用必看.txt"很可能包含了关于CRichEditCtrl使用的一些重要提示或者常见问题解答,而"聊天程序"可能是一个示例代码,展示了如何在实际项目中集成和使用CRichEditCtrl


界面
