Unicode Probleme mit TextOut
-
Hi,
ich hab ein Programm in dem ich einzelne Zeichen per TextOut anzeige. Das funktioniert prächtig. Allerdings nicht für alle Zeichen. Genauer gesagt bereitet mir das € Zeichen Probleme, aber es gibt bestimmt auch Andere...
Wenn ich den String L"€" in einer MessageBox ausgebe, funktioniert das.
Wenn ich es mit TextOut mache, wird nur ein '|' angezeigt.Ich bin mir recht sicher das der String in Ordnung ist und meine Ausgabe funktioniert, da es für die meisten anderen Zeichen ja funktioniert...
Gibt es da einen Trick?
-
Definierst du UNICODE in deiner Anwendung?
Benutzt du DrawTextW( )Der standardmäßig in einen Device Context geladene Font ist wohl nicht Unicode. Versuch mal:
HDC dc; PAINTSTRUCT ps; RECT rect; HFONT old_font; LOGFONT log_font; GetClientRect( window, &rect ); memset( &log_font, 0, sizeof( LOGFONT ) ); log_font.lfEscapement = 90; log_font.lfOrientation = 90; log_font.lfWeight = FW_NORMAL; log_font.lfCharSet = DEFAULT_CHARSET; dc = BeginPaint( window, &ps ); old_font = reinterpret_cast< HFONT >( SelectObject( dc, CreateFontIndirect( &log_font ) ) ); DrawText( dc, L"€", -1, &rect, 0 ); DeleteObject( SelectObject( dc, old_font ) ); EndPaint( window, &ps );Greetz, Swordfish
-
Jup, UNICODE ist definiert.
Das Problem lag tatsächlich am Font. Ich hab deinen code einfach mal übernommen. die Zeilen
log_font.lfEscapement = 90; log_font.lfOrientation = 90;mussten allerdings raus, sonst war der Text schief.
Jetzt muss ich nur noch ein wenig basteln, dass der Font wieder ungefähr so aussieht wie vorher...
/edit
da hätt ich doch glatt vergessen mich zu bedanken. Also:
Vielen Dank
-
An die Admins! 
Mir scheint, daß der Unicode bzw. die fehlende Kompiler-Einstellung eine erhebliche Fehlerquelle ist. Darüber sollte man mal etwas in die FAQ schreiben!