float Werte mit GDI TextOut ausgeben

Bonsai333

Mitglied
Hallo zusammen,

ich arbeiten mich gerade in der WinApi etwas ein, und stehe vor dem Problem
das ich keine float Werte mittels TextOut oder DrawText ausgeben kann. Daher
meine Frage, gibt es eine Möglichkeit mit einer dieser Funktionen float Werte
auszugeben.

mfg Bonsai333
 
Nicht direkt, du musst das float in einen String umwandeln/konvertieren.

Da gibt es zum Beispiel wsprintf oder die OOP-"elegant"-Methode mit dem Extra-Objekt stringstream:

char szTemp[200];
wsprintf( szTemp, "%.2f", fFloatWert );

szTemp dann bei TextOut oder DrawText übergeben.
 
Hallo Endurion,

danke für deine Antwort. Ich verwende bereits wsprintf. Hier mal einen kleinen Abschnitt aus meiner WM_PAINT Nachricht:

TCHAR l_sz_Buffer[100];
float l_f_Wert = 1.33333;

wsprintf(l_sz_Buffer,TEXT("Chunk Groesse: %f"), fWert);

TextOut(l_h_Kontext,
0,
l_si_ZeichenHoehe * l_i_Zaehler,
l_sz_Buffer,
lstrlen(l_sz_Buffer));

So mache ich es, den Gerätekontext ermittle ich mit BeginPaint und EndPaint, aber irgendwie mag das nicht so recht, deswegen verstehe ich das nicht richtig.

mfg Bonsai333
 
Hi nochmal,

also ich habe jetzt das Problem eingegrenzt. Ich glaube ich mache einen Fehler Zwecks UNICODE Zeichensatz. Bei mir liegt da scheinbar das Problem.

Irgendwie erkennt er die Zeichen nicht korrekt in der wsprintf(....) Funktion, denn als ich einfach auf sprintf(....) umgestellt habe und meinen Buffer gefüllt habe, klappt alles wie es soll.Muß mich nochmal drüber machen wo da der Haken genau hängt. Grins.

EDIT: Habe den Fehler gefunden! wsprintf(....) hat laut Hilfedatei kein Formatzeichen für float oder double Werte. Man muß swprintf(....) für Wide Character verwenden.
Zusätzlich muß man für TextOut die TextOutW Funktion sowie für lstrlen ->lstrlenW nehmen dann funktioniert alles. Normalerweise braucht man das W nicht extra angeben, aber irgendwie hat er bei mir nicht automatisch auf UNICODE umgeschaltet. Wie auch immer so funktioniert alles wie es soll. Danke nochmal für eure Hilfe.

mfg Bonsai333
 
Zuletzt bearbeitet:
Zurück