1
Ich suche nach Übereinstimmungen und markiert sie in Farbe. Danach zeige ich nur sie an. Ich muss den gesamten Text mit markierten Wörtern erneut anzeigen. Ich habe versucht, durch std::stringstream
und StreamIn
+ StreamOut
zu tun, aber die Farbe ist verloren.MFC. Speichern und Laden von CMFCRibbonRichEditCtrl
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;
}
'StreamOut' sollte funktionieren. Sehen Sie sich den Körper von CRichEditView :: Stream an. – ZDF
Ich denke ich mache es auch. 'void RichText :: saveInStringstream() { EDITSTREAM es = {0, 0, editStreamOutCallback}; es.dwCookie = reinterpret_cast (& m_rtf); m_richEdit.StreamOut (SF_RTF, es); } '' DWORD RUECKRUF RichText- :: editStreamOutCallback (DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb) { std :: string * rtf = reinterpret_cast (dwCookie); rtf-> schreiben (reinterpret_cast (pbBuff), cb); * pcb = cb; Rückgabe 0; } ' Aber der Quelltext bleibt im Stream. –
Es ist unmöglich, so viel Code in Kommentaren zu lesen. Bitte klicken Sie auf den Bearbeiten-Button und fügen Sie diese Informationen in Ihre Frage ein. –