CRichEditCtrl读取RTF文件问题 高手请进,高分求助!

df8327 df8327 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
使用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分都没问题!
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
df8327
界面 15,976 成员 115,866 内容