Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » DrawText bzw TextOut/Ex mit Umlaut

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
04.07.2006, 20:17 Uhr
xXx
Devil


Tjo wie die Überschrift schon sagt... ich hab mit TextOut, TextOutEx und DrawText jeweils das Problem, das mir die Umlaute nicht dargestellt werden... hab mit den selben String mal mit ner MessageBox ausgeben lassen... da ist alles richtig... ich weiß grad net wie man das beheben kann Jemand ne Idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.07.2006, 11:10 Uhr
Th



Evtl. hast du einen falschen Font eingestellt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.07.2006, 17:49 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Das wird wieder das verfluchte Unicode vs. ASCII Problem sein, wegen so nem ***** brauch ich immer doppelt so lang zum coden unter windoof

bzw.: Mit welchem Datentyp speicherst du den String und wie kompilierst du, mit oder ohne Unicode ?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.07.2006, 17:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wahrscheinlich mit unicode kompiliert aber nur normale chars genommen

vs2005 nimmt ja standardmäßig unicode
--
class God : public ChuckNorris { };

Dieser Post wurde am 05.07.2006 um 17:59 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.07.2006, 11:13 Uhr
xXx
Devil


Tjo wie du wissen solltest hab ich ja VC2003 Professional... hab chars verwendet... dann, hab ich das ganze auch auf TCHAR und lstrcpy usw umgestellt, was ja im Prinzip sowohl unter UNICODE aus auch unter dem anderen für die wahl des richtigen sorgen sollte(lstrcpy ist ja difiniert als strcpy und wenn unicode als wsccpy) ... aber das hilft alles nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.07.2006, 11:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


dann zeig halt mal etwas code, das ist allgemein imho trotzdem ein unicode problem, oder deine font unterstützt keine umlaute.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.07.2006, 11:30 Uhr
xXx
Devil


Hmm hab als Font mal Verdana genommen


C++:
TCHAR szText1[100];
TCHAR szText2[100];
memset(szText1, 0, sizeof(szText1));
memset(szText2, 0, sizeof(szText2));
::LoadString(hStringDll, 200, szText1, sizeof(szText1));
::LoadString(hStringDll, 201, szText2, sizeof(szText2));



So... das hab ich mir dann mal mit ner MessageBox ausgegeben... alles korrekt...


C++:
// Innerhalb der Create Funktion einer Klasse... als Parameter die beiden strings von oben...
_sntprintf(m_stText, 256, _T("%s"), lpszText);
_sntprintf(m_stCaption, 256, _T("%s"), lpstCaption);



Dann in meiner OnPaint Funktion(Ja... hab mir nen kleinen WinAPI Wrapper geschrieben ):


C++:

lf.lfStrikeOut    = 0;
lf.lfUnderline    = 0;
lf.lfHeight        = 18;
lf.lfEscapement = 0;
lf.lfItalic        = 0;
lf.lfWeight        = FW_BOLD;
lstrcpy(lf.lfFaceName, _T("Verdana"));

// Beim 1. Text hab ich ExtTextOut genommen...
::HFONT hFont        = ::CreateFontIndirect(&lf);
::HFONT    hOldFont    = (HFONT)::SelectObject(hDC, hFont);

::SetTextColor(hDC, RGB(223, 163, 97));
::SetBkMode(hDC, TRANSPARENT);
::GetTextExtentPoint32(hDC, m_stCaption, lstrlen(m_stCaption), &szText);
::ExtTextOut(hDC, rcClient.left + 7, rcClient.top + 5, ETO_OPAQUE, /*&m_rcStatic*/NULL, m_stCaption, lstrlen(m_stCaption), 0);

// Beim zeichnen des 2 Textes hab ich DrawText genommen...
lf.lfHeight        = 14;
lf.lfWeight        = FW_NORMAL;
hFont            = ::CreateFontIndirect(&lf);
::SelectObject(hDC, hFont);

::SetTextColor(hDC, RGB(0, 0, 0));
::GetTextExtentPoint32(hDC, m_stText, lstrlen(m_stText), &szText);
rcClient.left    += 8;
rcClient.top    += 15 + szText.cy;
rcClient.right    -= 8;
rcClient.bottom -= 15;
::DrawText(hDC, m_stText, lstrlen(m_stText), &rcClient, DT_LEFT | DT_TOP | DT_END_ELLIPSIS);

::SelectObject(hDC, hOldFont);
::DeleteObject(hFont);


Dieser Post wurde am 06.07.2006 um 11:52 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.07.2006, 11:32 Uhr
xXx
Devil


Öhm... FloSoft... kannst de meinen Post oben mal editieren? Ist was schief gelaufen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.07.2006, 11:39 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Die LoadString-Zeilen sind falsch, da gehört kein 100 hinten hin, sondern sizeof ... bei unicode ist die größe sonst nurn bruchteil.

Als was ist m_stText definiert? wahrscheinlich vergessen das als TCHAR zu definieren
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.07.2006, 11:49 Uhr
xXx
Devil


Hmm ne das ist nen TCHAR


Bearbeitung:
Das mit dem sizeof hab ich nu angepasst..

Dieser Post wurde am 06.07.2006 um 11:51 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: