Ich habe ein kleines Tool geschrieben, das aus einem bestimmten Forum (nein, nicht die
DP *g*) neue Einträge ermittelt und diese dann in einem RichEdit darstellt. Dabei wird der ggf. vorhandene phpBB-Code geparsed und in RTF umgewandelt. Das klappt auch alles prima, nur beiße ich mir an einem Problem die Zähne aus: da ich auch die Möglichkeit biete, das RTF als Datei abzuspeichern, würde ich Zitate dort gern mit einem hellgrauen Absatzhintergrund versehen, falls jemand diese Datei später mit Word öffnet. Die bisherige Absatzformatierung gestalte ich mittels EM_SETPARAFORMAT und einem PARAFORMAT2-Record. Dieser enthält ja auch die Felder wShadingWeight und wShadingStyle. Zu wShadingStyle sagt das
MSDN:
Zitat:
Style and colors used for background shading. Bits 0 to 3 contain the shading style, bits 4 to 7 contain the foreground color index, and bits 8 to 11 contain the background color index.
Wenn ich das richtig deute, bestimmt somit das niederwertigste Nibble den Stil, das folgende Nibble die Vordergrundfarbe und das wiederum darauf folgende die Hintergrundfarbe laut Tabelle. Versuchen wir also mal Folgendes: Verhältnis Vordergrund/Hintergrund 50%, beide Farben auf Hellgrau, kein Füllstil. Wenn ich das richtig verstehe (und gerade das scheint ja nicht so zu sein), hieße das:
Delphi-Quellcode:
ParaFormat.wShadingWeight := 50;
ParaFormat.wShadingStyle := $0F shl 4 or $0F shl 8; //oder auch gleich $FF shl 4
Damit wird der Absatz aber nicht hellgrau, sondern schwarz. Shiftet man etwas weiter, kommen andere Farben heraus (einen weiter nach links z.B. wird es Magenta). Ich habe noch kein Muster erkennen können, weiß somit auch nicht, wo mein Denkfehler liegt. Kann mich mal jemand erhellen?
[edit] @Mods: wegen TRichEdit (das ja irgendwie damit zu tun hat) habe ich das Thema in dieser Sparte erstellt, falls das aber unter
Win32-
API besser aufgehoben ist, bitte verschieben. Danke [/edit]