type editstream
-
Hallo ihr,
ich habe einen Rich Edit Text in meinem Dialog. Dort möchte ich versuchen den Text formatiert auszugeben:
[code] CHARFORMAT Cfm; //Formatierung d. Textes m_ctlausgabe.GetSelectionCharFormat(Cfm); //CRrichEditCtrl m_ctlausgabe Cfm.cbSize = sizeof(CHARFORMAT); Cfm.dwMask = CFM_BOLD; Cfm.dwEffects = CFE_ITALIC, CFE_UNDERLINE; m_ctlausgabe.SetSelectionCharFormat(Cfm); m_ctlausgabe.SetFocus(); EDITSTREAM test; //dieser Variablen will ich den string oder den Cstring zuweisen CString s = "ich bin ein Cstring!"; m_ctlausgabe.StreamIn(SF_RTF, test); [/code]
mein Problem ist, dass die Funktion CRichEditCtrl.StreamIn() als zweiten Parameter ein EDITSTREAM& erwartet. Jetzt habe ich eine Variable von diesem Typ erstellt und möchte gern einen CString in editstream konvertieren(damit ich es der Funktion übergeben kann).
Klar, ich hab mir mal den typ editstream schon in MSDN angeschaut und versucht so auf eine Lösung zu kommen. Aber das ist so der erste typ der mir totale schwierigkeiten macht. Ich verstehe da nur
Meine Kollegen hier können(wollen) mir nicht wirklich helfen. Deshalb wäre ich froh, wenn einer von euch mir helfen könnteDanke + Gruß Kitty
-
Hallo,
Du benötigst eine CALLBACK Funktion für das streamen.
Diese kann entweder statisch in der cpp datei sein oder eine statische
Memberfunktion deiner klasse.static DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CString* pString = (CString*)dwCookie; *pcb = min(pString->GetLength(), cb); ::lstrcpyn((LPTSTR)pbBuff, *pString, cb); *pString = pString->Mid(*pcb); return 0; } // irgendwo im Quelltext EDITSTREAM es; CString text(_T("Hallo Welt!")); es.dwCookie = (DWORD)&text; es.pfnCallback = StreamInCallback; m_wndRichEdit.StreamIn(SF_TEXT, es);
Die Callback Funktion wird so oft aufgerufen, bis der String keine Zeichen mehr
enthält. In diesem Beispiel also zweimal.Gruss
Frank
-
Hallo Leute,
also ich hab's nochmal versucht einen Text im RichEditFeld auszugeben. Wieder hab ich irgendwo einen Fehler und bekomme es einfach nicht hin!! Das ist total ärgerlich, daher hoffe ich, ihr könnt mir helfen!
Also hier erstmal mein Code:
static DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CString* pString = (CString*)dwCookie; *pcb = min(pString->GetLength(), cb); ::lstrcpyn((LPTSTR)pbBuff, *pString, cb); *pString = pString->Mid(*pcb); return 0; } //... void DisplayUnknownBit::formateText() { EDITSTREAM file; CString text ="Blubb"; file.dwCookie = (DWORD)&text; file.pfnCallback = StreamInCallback; file.dwError = 0; m_RichEditText.StreamIn(SF_TEXT, file); //... }
Seht ihr irgendwo einen Fehler? Könnt ihr mir da weiterhelfen?
Wäre echt dankbar dafür,
Gruß Kitty