schon wieder unicode
-
Ich hab schon vor ein paar Tagen gefragt, wie ich jap. Schriftzeichen mit DrawText ausgeben kann, aber ihr habt mir gesagt, ich soll nach ein paar Tutorials suchen. Das ist nun der dritte Tag und ich find immer noch nix. Ich weiss lediglich, dass ich UNICODE und _UNICODE per #define einbinden muss. Das hab ich nun getan. Trotzdem will der mir nur ascii Zeichen ausgeben. Alles was über \u00ff geht wird als nicht druckbar(ein schwarzes rechteck) angezeigt.
Der Code:
#define WIN32_LEAN_AND_MEAN #define WINDOW_CLASS_NAME L"UWINDOW" #define UNICODE #define _UNICODE . . . void WriteString(HWND hwnd,char*str,int x, int y,COLORREF Bk,COLORREF cText) { wchar_t *UStr = TEXT("\u00ff"); //kann noch angezeigt werden, da ascii \u0100 aber nicht mehr TCHAR sz[] = TEXT("Просмотр шрифтов"); //russische schriftzeichen aus 'nem tutorial HDC dc; RECT r; dc = GetDC(hwnd); GetClientRect(hwnd,&r); r.top=y; r.left=x; SetRect(&r,x,y,x+20,y+20); SetBkColor(dc,Bk); SetTextColor(dc,cText); FillRect(dc,&r,(HBRUSH)GetStockObject(BLACK_BRUSH)); DrawText(dc,sz,-1,&r,0); ReleaseDC(hwnd, dc); }
-
Ich seh grad, dass die rus. Schriftzeichen hier nicht dargestellt werden können, denkt sie euch einfach dazu.
-
Kann denn Ms Sans Serif diese Zeichen darstellen? Ich wage, das zu bezweifeln.
-
WebFritzi schrieb:
Kann denn Ms Sans Serif diese Zeichen darstellen? Ich wage, das zu bezweifeln.
Wie meinst du da? Unicode wurde dazu geschaffen solche Zeichen darzustellen.
Willst du mir sagen, ich soll den Font ändern? Wie?
-
INTEGER schrieb:
Willst du mir sagen, ich soll den Font ändern? Wie?
Ne, will ich nicht direkt. Ich hab zwar selber keine Ahnung davon, aber kann mir kaum vorstellen, dass das mit MS Sans Serif geht. Dass man also eine andere Schriftart braucht. Ist aber nur so'n Gefühl.
-
Das Font muss japanische Zeichen darstellen können. Am besten installierst du das japanische Sprachpaket in den Regions-u. Sprachoptionen (wenn du XP verwendest).
-
Du könntest recht haben. Aber andererseits kenn ich kein Font der solche Zeichen
enthält und beim IME wird bei der Eingabe nicht die Schriftart geändert.
Kann sich jmd., der sich mal damit beschäftigt hat, mal zu Wort melden?
Wenn ich es endlich geschafft hab, werd ich den Code online stellen für alle
anderen.
-
Aziz schrieb:
Das Font muss japanische Zeichen darstellen können. Am besten installierst du das japanische Sprachpaket in den Regions-u. Sprachoptionen (wenn du XP verwendest).
Das Sprachpaket ist längst installiert. Ich kanns ja mal mit den Fonts versuchen,
kenn mich aber da nicht aus und einer von euch müsste mir da 'n Beispielcode schicken.
-
Also mit CreateFontIndirect erzeugst du ein Font. Im Prinzip gibst du gewisse Charakteristiken und einen Font-Namen an, und das Betriebssystem versucht aus den installierten Fonts das passende herauszusuchen. Wenn die Funktion erfolgreich war erhältst du ein Handle, und dieses selektierst du mit SelectObject in den Gerätekontext. (DeleteObject nicht vergessen, und eventuell das alte Font wiederherstellen).
HFONT CreateFontIndirect(CONST LOGFONT *lplf); HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);Darauffolgende Aufrufe von Funktionen, die was mit Text-Output zu tun haben, verwenden dann den selektierten Font.
-
Noch was zu den Sprachpaketen: Als ich das arabische Sprachpaket installiert habe, gab es die Schriftart "Traditional Arabic". Diese war imstande arabischen Text mit Schriftzeichen hübsch zu rendern. Sogar Timesnew-Roman konnte das. Ist aber ein Sonderfall, dass dieser Font arabische Buchstaben darstellen kann. Du musst irgendwie an japanische Fonts herankommen falls im Sprachpaket wirklich keine enthalten waren...
-
Ok, das mit den Fonts hab ich jetzt hingekriegt. Mir fehlt jetzt einfach nur ein Font mit den gewünschten Zeichen, sobald ich das hab, stell ichs online.
Danke für die Hilfe!
-
Warum machst du dir eigentlich nicht einfach ein Bitmap von dem Schriftzug?
-
WebFritzi schrieb:
Warum machst du dir eigentlich nicht einfach ein Bitmap von dem Schriftzug?
Hab ich auch schon dran gedacht, aber bitmaps sind zu gross und wie .jpg dateien aufgebaut sind weis ich nicht.
-
GESCHAFFT!! Der Font ist Arial Unicode MS! THX euch beiden!!!
Ich werds zippen und den link hier her schicken.
-
http://mitglied.lycos.de/yhva/Fenster02.cpp ist der source code und http://mitglied.lycos.de/yhva/Fenster03.exe das prog.!
Bei Problemen bitte sofort bescheid sagen!
-
Und ich bitte um Feedback, wie man das Prog., schneller/besser machen kann!
/Ach ja, beendet wird das mit 'q'!
-
Ich kann die Exe zwar nicht runterladen aber ich kann mir den Code ansehen. Was mir hauptsächlich auffällt ist, dass du keine richtige Messageloop hast.
Ganz simpel:
MSG msg; while( GetMessage(&msg, NULL, 0, 0) ) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;Alles was vor der Loop steht sollte in den Nachrichtenbehandlungen, wie WM_KEYDOWN, WM_PAINT etc. stehen.
Der Code ist kurz gesagt katastrophal, aber ich hoffe du nimmst das jetzt nicht persönlich
-
das ist absicht, ich hab was anderes damit vor deswegen
-
hmm, die .exe lässt sich nicht downloaden..
veruschts mal damit: http://mitglied.lycos.de/yhva/Fenster03.exe
sagt bitte obs geht
geht immer noch nicht
dann geht auf http://mitglied.lycos.de/yhva/
dort könnt ihr euch das downloaden
-
Geht immer noch nicht. Lycos ist einfach zum Knutschen.
-
naja, die .exe ist nicht so wichtig. hauptsache man hat den code.
und sry für den etwas chaotische code, ich hatte mal was anderes geplant.