Wie erhält man die Breite einer Zeichenkette in Pixel (/ logische Einheiten)?

8

Ich folge einem Tutorial hier , um eine horizontale Bildlaufleiste zu einer Liste hinzuzufügen Steuerung. Alles, was dort funktioniert, außer der TextWidth () - Funktion (VC ++ 2012 sagt, es ist undefiniert), so fand ich diese Frage. Aber ich habe keine Ahnung, wie man eine hdc initialisiert, also habe ich das . Aber GetTextExtentPoint32 gibt immer Null zurück.

Irgendeine Idee, wie ich das lösen kann?

Mein Code sieht so aus (nach dem Bearbeiten):

%Vor%

(szMessage enthält Benutzereingaben)

    
BioCycle 28.04.2013, 13:16
quelle

2 Antworten

3

Ok, um meine Frage zu beantworten: Der obige Code (siehe Frage) gibt einen viel zu hohen Wert für Size.cx, weil MESSAGE_SIZE 1000 ist und nicht die Größe der tatsächlichen Zeichenkette, also habe ich stattdessen strMessage.c_str und strMessage.size () benutzt. Dies führte immer noch zu kleinen Ungenauigkeiten bei der Ausgabe. Ich nahm an, dass dies daran lag, dass die falsche Schriftart verwendet wurde, also habe ich manuell eine Schriftart erstellt. Jetzt gibt es einen korrekten Wert für Size.cx. Der Code sieht jetzt so aus:

%Vor%

später im Code:

%Vor%

Bearbeiten:

%Vor%

Funktioniert auch und erfordert nicht, dass Sie eine Schriftart erstellen oder die Schriftart des Steuerelements bearbeiten

    
BioCycle 29.04.2013, 10:44
quelle
5

Mein Weg:

%Vor%     
ST3 17.06.2013 13:56
quelle

Tags und Links