CRichEditCtrl插入图片后,存储成RTF成功,但是无法读取
我在CRichEditCtrl插入图片后,用以下代码,调用OnWrite存入文件,再用Word打开myfile.rtf文件,发现图片确实存在。再用OnRead反读回控件,发现图片不会显示,请问这是怎么回事?
- C/C++ code
static DWORD CALLBACK MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb){ CFile* pFile = (CFile*) dwCookie; pFile->Write(pbBuff, cb); *pcb = cb; return 0;}static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb){ CFile* pFile = (CFile*) dwCookie; pFile->Read(pbBuff, cb); *pcb = cb; return 0;}void CTestRichEditDlg::OnWrite() { // TODO: Add your control notification handler code here CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite); EDITSTREAM es; es.dwCookie = (DWORD) &cFile;//设置用例参数,以便回调函数调用 es.pfnCallback = MyStreamOutCallback; m_RichEdit.StreamOut(SF_RTF, es);}void CTestRichEditDlg::OnRead() { // TODO: Add your control notification handler code here CFile cFile(TEXT("myfile.rtf"), CFile::modeRead); EDITSTREAM es; es.dwCookie = (DWORD) &cFile;//设置用例参数,以便回调函数调用 es.pfnCallback = MyStreamInCallback; m_RichEdit.StreamIn(SF_RTF, es); }[解决办法]
试试 SF_TEXTIZED
[解决办法]
查一下 RichEdit 的版本。换一个版本试一下。试别的版本时,请把别的版本的dll拷到执行目录 即可。
[解决办法]
RichEdit主要用于邮件编辑器等系统应用。
我以前做过半年左右的项目就折腾RichEdit。
稍微有点忘了,版本1.0是一个独立版本,2.0以上的版本(riched20.dll)除了他自己是2.0 3.0 。。。以外,
它还为版本1.0留了一个接口(riched32.dll)。
CRichEditCtrl/View的原码文件中,就能看到riched32.dll的字样。
这两个dll都在system32里面。
你从网上,或什么地方下载,下载以后拷到执行文件目录进行测试。
因为我在做RichEdit项目,就遇到了dll不好的问题。
微软在网上提供了各个版本的riched?0.dll,供我们下载。
[解决办法]
关注
[解决办法]
顶顶顶顶顶顶
[解决办法]
关注