Hallo Hans!
Vor einem ähnlichen Problem stehe ich leider auch gerade.
Bei mir ist es ein Programm, das Druckdateien in ESC/P unter Windows ausdrucken soll. Das funzt für Grafik-Druck bestens, aber nicht beim Textdruck.
1. Um einen großen Teil der DOS-Zeichen (ASCII) anzeigen zu können, muß der Canvas des Ausgabemediums ein neues Font-Objekt zugeordnet werden. Dazu gibt es die Windows-API-Funktion CreateFont. Wichtig ist dabei Folgendes: Der Parameter
Quelltext
1:
| DWORD fdwCharSet, // character set identifier |
muß mit "OEM_CHARSET" belegt werden. Und natürlich darf nicht vergessen werden, den Font nach Gebrauch mit DeleteObject wieder freizugeben.
2. Das ganze funktioniert nur eingeschränkt! Da Deine Grafiken nicht dargestellt werden, kann ich nicht sagen, ob dies für Dich zutrifft. Leider verwendet Windows die universelle Codepage 850, während die beste DOS-Codepage 437 (USA) ist. 437 enthält einfache und doppelte Linien sowie alle Verknüpfungen (Winkel, T und Kreuz in allen Kombinationen Einfach/Doppelt). 850 hat leider keine Verknüpfungen Einfach/Doppelt! Zusätzlich fehlen die griechischen Buchstaben (z.B. Omega). Insgesamt fand ich 47 Abweichungen!
Alternativ ergibt sich folgende Möglichkeit: Die Linien-Grafikzeichen gemäß ASCII-Tabelle identifizieren und durch MoveTo und LineTo nachbilden, die übrigen Zeichen mit "OemToChar" oder OemToCharBuff" in einen ANSI-String umwandeln und ausgeben. Das klappt natürlich nicht mit den Griechen etc.!
Unter Windows NT soll ggf. etwas mit Unicode gehen. Da ich nur Windows 98 habe, kann ich nur feststellen, daß Unicode auch die Linien fehlerhaft darstellt - "|", "+" und "-" ersetzen die Linien. Aber dann sind wenigstens die Akzent-Buchstaben an den Ecken etc. weg und der Mangel fällt nicht gleich auf - dafür habe ich dann 74 Abweichungen
Gruß
Dietmar Brüggendiek