Font und Fontfarbe im CRichEditCtrl ändern

NinjaOne

Erfahrenes Mitglied
Hallo,
ich hab in einem Dialog ein CRichEditCtrl Objekt eingefügt.
In diesem Objekt möchte ich Texte ausgeben mit unterschiedlicher Font und Fontfarbe.
Kann mir jemand sagen wie ich das mache ?
Ich würd gerne mein CString-Objekt so umwandeln das es die Fontart und Fontfarbe enthält.
Ich hoffe ich hab mich klar ausgedrückt, wenn nicht einfach fragen.


Ich danke euch schon mal für eure Antworten.

Bye
 
Das geht über die Funktionen SetTextColor und SelectObject. über die erste Funktion kannst du die Farbe der Textausgabe angeben (z.B.
Code:
SetTextColor(RGB(255,0,0));
setzt die Schriftfarbe auf Rot.
Der richtige Aufruf ist dann
Code:
myRichEdit.SetTextColor(RGB(255,0,0));
Genauso kannst du auch den Font ändern:
Code:
CFont myFont;
myFont.CreatePointFont(groesse,"schrift",NULL);
myRichEdit.SetFont(&myFont);
Wenn du Genaueres über darüber wissen willst, schau mal in der MSDN nach.

Mfg

langer
 
Zuletzt bearbeitet:
Sorry, da war ich wohl zu schnell.
Habe gerade gesehen, daß im RichEdit die Funktion SetTextColor nicht verfügbar ist. Geht also nur Fontänderung.

Mfg

langer
 
Zeichenformatierungen gehen bei CRichEditCtrl mit der Methode "SetSelectionCharFormat()". Zur genauen Verwendung wirf mal einen Blick in die Klassenreferenz.
 
Ich danke euch für die Antworten, doch geht ihr etwas in die Falsche Richtung !
Wie ich das mit den Funktionen machen kann, daß würde ich so glaube ich hin bekommen.
Doch gibt es auch eine möglichkeit in eine Art String die Font und Fontfarb änderungen hin zu bekommen ?
Wie komme ich auf so etwas ?
Wenn ich einen Text kopiere der unterschiedliche Fonts und Fontfarbe erhält und ihn in das Eingabefeld von CRichEditCtrl-Objekt kopiere, kopiert er die Fond und Textfarben mit.
Ich kopiere ja auch nur einen String und alle Text änderungen sind enthalten, oder nicht ?
Nun frag ich mich, ob es nicht auch möglich ist einen solchen String in seinem Progamm zu erzeugen und ich zu gegebener Zeit im CRichEdit-Eingabefeld auszugeben ?

Ich hoffe ihr könnte mir jetzt folgen und weilerhelfen !
Würde mich über weitere Antworten von euch freuen und sorry wenn ich mich falsch ausgedrückt habe :).

Bye
 
Um die Formatierungen schon vorher einzubauen, müsstest du den String im RTF-Format kodieren und dann erst in das CRichEditCtrl-Control einsetzen.

Hier kannst du mal einen Blick auf RTF-Spezifikation werfen:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnrtfspec/html/rtfspec.asp

Es macht sicher wenig Sinn (viel zu aufwändig), jetzt so eine Art RTF-Encoder zu bauen . Der beste Weg ist nach meiner Meinung den normalen Text in ein CRichEditCtrl einzusetzen, dort mit den entsprechenden Methoden zu formatieren und dann als RTF-String dort herauszuziehen. Dafür könnte man z.B. ein nicht sichtbares "Arbeits"-CRichEditCtrl verwenden.

Eine andere Frage: Soll der formatierte Text nur angezeigt oder auch vom Anwender editiert werden können? Falls ersters zutrifft tut man sich mit einem Html-Control deutlich einfacher, weil die entsprechenden Formatierungssequenzen auch schnell "zu Fuss" erstellt werden können.
 
Zuletzt bearbeitet:
Zurück