我用的是Rich Edit 5.0版本
通过加载Msftedit.dll文件实现的。
我在Rich Edit事先写入Text和jpg,想通过CRichEditCtrl的ITextDocument接口的save方法直接保存,但是调用save方法不成功。
我保存文档的代码是这样的,结果Save的时候就发生意外,不知道如何正确使用ITextDocument接口,请高手指点迷津。
const IID BASED_CODE IID_ITextDocument =
{ 0x8CC497C0, 0xA1DF, 0x11CE, { 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d } };
ITextDocument *pTextDoc;
LPRICHEDITOLE m_pRichEditOle;
::SendMessage(m_REControl50W.m_hWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&m_pRichEditOle); HRESULT hr=m_pRichEditOle->QueryInterface(IID_ITextDocument, (void **) &pTextDoc);
VARIANT Var;
VariantInit(&Var);
Var.vt = VT_BSTR;
Var.bstrVal = SysAllocString(L"E:\\VC\\工程\\EasyProcess\\资源\\msftedit\\RICHEDIT50WTest\\1.rtf"); // Use file command
pTextDoc->Save(&Var,tomCreateAlways, CP_ACP );// tomOpenExisting = 48,
通过加载Msftedit.dll文件实现的。
我在Rich Edit事先写入Text和jpg,想通过CRichEditCtrl的ITextDocument接口的save方法直接保存,但是调用save方法不成功。
我保存文档的代码是这样的,结果Save的时候就发生意外,不知道如何正确使用ITextDocument接口,请高手指点迷津。
const IID BASED_CODE IID_ITextDocument =
{ 0x8CC497C0, 0xA1DF, 0x11CE, { 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d } };
ITextDocument *pTextDoc;
LPRICHEDITOLE m_pRichEditOle;
::SendMessage(m_REControl50W.m_hWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&m_pRichEditOle); HRESULT hr=m_pRichEditOle->QueryInterface(IID_ITextDocument, (void **) &pTextDoc);
VARIANT Var;
VariantInit(&Var);
Var.vt = VT_BSTR;
Var.bstrVal = SysAllocString(L"E:\\VC\\工程\\EasyProcess\\资源\\msftedit\\RICHEDIT50WTest\\1.rtf"); // Use file command
pTextDoc->Save(&Var,tomCreateAlways, CP_ACP );// tomOpenExisting = 48,
解决方案 »
- WTL中使用基于MFC的第三方库——彪悍的CGridCtrl?
- VC6.0中DBGrid控件的Columns选项卡中的Column项中的下拉菜单中的内容有时候会没了,请问是怎么回事
- 如何让VC生成的程序运行在无VC环境的系统下
- 关于GDI+谁给我发个sdk或者给个微软的连接阿,我在微软没找到。
- 怎么获得模块的instance啊?
- 请教 microsoft chart control (Pie):如何在饼图上显示所占的百分比!谢谢!
- 如何阻止一个进程的创建?
- 用到CrystalReport控件的安装盘怎么做?
- 如何使用序列化方法从文件中读取数据到一个结构体中??即刻给分!!!!!!!!!!!
- 急急急
- 数据库导出时遇到的问题
- 怎样在MainApp中增加CInternetSession session成员?
不过通过变通的方式实现了
void CRICHEDIT50WTestDlg::OnSaveRTF()
{
CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite);
EDITSTREAM es;
es.dwCookie = (DWORD) &cFile;
es.pfnCallback = MyStreamOutCallback;
m_RichEditCtrl.StreamOut(SF_RTF, es);
AfxMessageBox("myfile.rtf保存成功!");
}