none
求助:如何将RichEdit2控件中的文本链接也保存到RTF文件中? RRS feed

  • 问题

  • 直接上关键部分代码(程序中使用的是Rich Edit 2.0 Control):

    //如下代码实现将RichEdit控件变量m_RichEdit的内容写到My_RichEdit_OutFile.rtf文件中
    static DWORD CALLBACK MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
    {
    CFile* pFile = (CFile*) dwCookie;
    
    pFile->Write(pbBuff, cb);
    *pcb = cb;
    
    return 0;
    }
    
    void CtestRichEdit2Dlg::OnBnClickedButton4()
    {
    CFile cFile(TEXT("My_RichEdit_OutFile.rtf"), CFile::modeCreate|CFile::modeWrite);
    EDITSTREAM es;
    
    es.dwCookie = (DWORD) &cFile;
    es.pfnCallback = MyStreamOutCallback; 
    m_RichEdit.StreamOut(SF_RTF, es);
    }
    
    
    //如下代码实现把My_RichEdit_OutFile.rtf文件中的内容写入另一个对话框的m_FuckRichEdit控件变量中
    static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
    {
    CFile* pFile = (CFile*) dwCookie;
    
    *pcb = pFile->Read(pbBuff, cb);
    
    return 0;
    }
    
    void CFuckDlg::RestoreRichEdit()
    {
    CFile cFile(TEXT("My_RichEdit_OutFile.rtf"), CFile::modeRead);
    EDITSTREAM es;
    
    es.dwCookie = (DWORD) &cFile;
    es.pfnCallback = MyStreamInCallback;
    m_FuckRichEdit.StreamIn(SF_RTF, es);
    }
          但是有个问题,m_RichEdit中如果有文本链接或超链接,写到rtf文件中是普通文本。我的目的是:将m_RichEdit变量中的内容和格式保持不变,拷贝到另一个对话框的RichEdit控件中,我上面的代码只能实现文本的拷贝。不知怎样才能实现所有内容格式的拷贝?

    前无古人,后无来者

    2018年9月5日 10:39

全部回复

  • 你好,

    感谢在微软论坛发帖。

    >>但是有个问题,m_RichEdit中如果有文本链接或超链接,写到rtf文件中是普通文本。我的目的是:将m_RichEdit变量中的内容和格式保持不变,拷贝到另一个对话框的RichEdit控件中,我上面的代码只能实现文本的拷贝。不知怎样才能实现所有内容格式的拷贝?

    你可以考虑使用Rich Edit剪贴板操作。通过定义不同的剪贴板格式,来实现拷贝不同的格式包括文本链接超链接等。 这里有个链接关于如何使用Rich Edit剪贴板操作
    你可能需要去注册不同的fomat,用RegisterClipboardFormat函数, 当然Clipboard也有一些已知的format
    比如html链接的话,你可能就要用到CF_HTML

    如果要实现图片,动图一类的拷贝的话,应该要用到OLE

    Best Wishes,

    Jack Zhang


    MSDN Community Support<br/> Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>

    2018年9月7日 10:05
    版主