首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC。保存和加载CMFCRibbonRichEditCtrl

MFC。保存和加载CMFCRibbonRichEditCtrl
EN

Stack Overflow用户
提问于 2016-03-28 09:41:01
回答 1查看 163关注 0票数 1

我在找火柴,在颜色上高亮显示。在此之后,我只展示它们。我需要用突出显示的单词重新显示整个文本。我试过通过std::stringstreamStreamIn + StreamOut来做,但是颜色消失了。

代码语言:javascript
复制
void RichText::saveInStringstream() 
{ 
    EDITSTREAM es = { 0, 0, editStreamOutCallback }; 
    es.dwCookie = reinterpret_cast<DWORD_PTR>(&m_rtf);   
    m_richEdit.StreamOut(SF_RTF, es); 
} 


DWORD CALLBACK RichText::editStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) 
{ 
    std::stringstream *rtf = reinterpret_cast<std::stringstream *>(dwCookie); 
    rtf->write(reinterpret_cast<char *>(pbBuff), cb); 
    *pcb = cb; 
    return 0; 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 23:37:59

我仍然找到了解决方案,但使用了CMemFile

代码语言:javascript
复制
void RichStream::Save(CMFCRibbonRichEditCtrl &richEdit)
{    
    file.SeekToBegin();

    EDITSTREAM es = { 0, 0, editStreamOutCallback };
    es.dwCookie = reinterpret_cast<DWORD_PTR>(&file);

    richEdit.StreamOut(SF_RTF, es);      
}

void RichStream::Load(CMFCRibbonRichEditCtrl &richEdit)
{   
    file.SeekToBegin();

    EDITSTREAM es = { 0, 0, editStreamInCallback };
    es.dwCookie = reinterpret_cast<DWORD_PTR>(&file);    

    richEdit.StreamIn(SF_RTF, es);
}

DWORD CALLBACK RichStream::editStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    CMemFile* pFile = (CMemFile*)dwCookie;

    pFile->Write(pbBuff, cb);

    *pcb = cb;

    return 0;   
}

DWORD CALLBACK RichStream::editStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    CMemFile* pFile = (CMemFile*)dwCookie;

    *pcb = pFile->Read(pbBuff, cb);

    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36259665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档