Fragensteller
Über Windows API Unicode in Fenstern ausgeben

Frage
-
Guten Tag!
Ich mache beispielsweise den Aufruf "TextOutW(hdc, 0, 0, L"öööö", 4)", d.h. alles so, wie es von Unicode her gedacht ist. Im Fenster erscheinen dann keine ö's, sondern merkwürdige Symbole. Allerdings habe ich auch ein russisches Windows, russische Zeichen kann ich dementsprechend ohne Probleme wiedergeben, aber zum Beispiel griechische wiederum nicht. In der Menüleiste kann ich hingegen alle möglichen Zeichen korrekt ausgeben. Ich bitte um Rat, vielen Dank!
Alle Antworten
-
Hallo Kolodez,
Welche Font benutzt Du?
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo, Ionut!
Danke für deine Antwort. Ich benutze gar keine bestimmten Fonts. Ich habe einfach folgenden Quellcode (sorry, ich bin Anfänger):if (message == WM_PAINT) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); TextOutW(hdc, 0, 0, L"öööö", 4); EndPaint(hwnd, &ps); return 0; }
Dann kommen diese vier merkwürdigen Symbole. Das Komische (was ich eben rausgefunden habe): Wenn ich ihn anweise, in der entsprechenden Zeichenkette mindestens einmal L'\0' auszugeben, werden die ö's korrekt dargestellt (aber leider trotzdem nicht richtig skaliert), sprich wenn ich z.B.
TextOutW(hdc, 0, 0, L"öööö", 5); //oder TextOutW(hdc, 0, 0, L"öö\0ö", 4);
verwende. Ich habe jetzt übrigens wieder ein englisches Windows. Ich habe es auch auf einem anderen PC ausprobiert, da gab es diese Probleme nicht. Danke für deine Hilfe!
- Bearbeitet Kolodez Samstag, 12. April 2014 22:07
-
Hallo Kolodez,
So ich habe Dein Kode ausprobiert un es funktioniert auf ein englisches Windows? Auf welche Windows hast Du es getestet wo es nicht funktioniert?
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo, Ionut!
Ich habe auch ein englisches Windows und bei mir funktioniert es nicht. Meine Mutter hat ein russisches Windows, da funktioniert es auch nicht. Auf anderen englischen und deutschen Windowsen hat es aber funktioniert, deswegen, denke ich, hat das nichts direkt mit der Sprache zu tun.
Gruß, Kolodez
-
Ich habe jetzt herausgefunden, woran es lag. Die Systemschriften können höchstens 256 Zeichen aufnehmen. Die unteren sind die ASCII-Zeichen, die oberen werden gesetzt je nachdem, welche Sprache man als Standardsprache für Nicht-Unicode-Programme ausgewählt hat. Standardmäßig sind da auch deutsche Umlaute drin, aber wenn man z.B. Russisch als Standardsprache für Nicht-Unicode-Programme einstellt, werden da russische Zeichen reingeladen und für die Umlaute ist kein Platz mehr. Allerdings weiß ich immer noch nicht, warum die Umlaute zumindest irgendwie (aber trotzdem falsch) dargestellt wurden, als ich mindestens ein 0x00-Zeichen ausgegeben habe. Das wird wohl ein Rätsel bleiben.