Textout rechtsbündig
-
Hallo,
ich versuche eine Ausgabe auf dem Desktop rechtsbündig
darzustellen:.. vector<vector<string>> hd; .. if(hd.Daten[i][2]!= "0") { std::ostringstream ostrB; ostrB // << std::setw(5) << std::setfill('_') << i <<". " << setw(15) << FormatDatum((string)hd.Daten[i][10]) << ".." << hd.Daten[i][11].length() <<std::fixed << std::setprecision(2) //<< std::internal << std::right << setw(8) << atof(hd.Daten[i][11].data()); TextOut(hdc,50,70 +(i*14),ostrB.str().c_str() ,ostrB.str().size() ); }
Ausgabe:
18.02.2011..7 -221.77
18.02.2011..7 -439.93
18.02.2011..6 -54.67
usw.Es ist so,dass auf dem Desktop der dritte Wert (-54.67) eine halbe
Schriftbreite unter (-439.93) angezeigt wird. Was man hier nicht
erkennen kann. Setw(8) scheint nicht zu greifen.Was muss ich ändern?
Vielen Dank
-
Siehe hier:
http://msdn.microsoft.com/en-us/library/dd145133
http://msdn.microsoft.com/en-us/library/dd145091oder besser gleich DrawText verwenden, was das Ganze einfacher macht.
-
Hallo,
vielen Dank.
mit
SetTextAlign(hdc, TA_LEFT | TA_TOP | TA_NOUPDATECP);
habe ich es bereits versucht.
Das Ergebnis war unverändert: hier glaube ich, dass der
ostringstream ostrB (als Ganzes) positioniert wird ?Oder liege ich da falsch?
-
Der Text, den du an die Funktion übergibst wird als Ganzes anhand der Position gezeichnet. Wenn du dies nicht haben willst, dann musst du mehrere Textout/DrawText mit verschiedenen Positionen machen. Einfacher ist aber immer noch DrawText.
-
Möglicherweise benutzt Du einen Font, bei dem ein Leerzeichen nicht so breit ist, wie die anderen Zeichen.
Vermutlich ist es tatsächlich besser, die einzelnen Bestandteile mittels DrawText auszugeben, da kannst Du ein Alignment mitgeben.
-
Hallo,
nochmals Danke HighLigerBiMBam und Belli
Ich werde Textout mehrmals benutzen und den
ostrB Stream entsprechend aufteilen.Danke.