Buchstabenbreite von bestimmten Schriftart

Reticent

Erfahrenes Mitglied
Hallo liebe Leute,

ich brauche die Buchstabenbreite eines Schriftarts wissen.
Ich habe ein Label (Static Text). Drinn ist Text mit irgeneinem Font geschrieben.

Die Höhe geht ja durch GetFontHeight, aber weiß jemand wie ich die Buchstabenbreite abfragen kann?
Ich habe keine Ahnung wonach ich suchen soll...
 
Zuletzt bearbeitet:
Moin moin,

folgendes hilft
Code:
CFont *oldfont;
CDC pDc;
CFont font;

CRect Rect(0,0,0,0);

oldfont = pDc->SelectObject( font);//Original Schrift sichern
pDc->DrawText(strText, -1, &Rect,DT_CALCRECT);//Text schreiben
pDc->SelectObject( oldfont);//original Schrift wieder herstellen
In Rect stehen dann die Daten von dem was du geschrieben haben willst, auch die Höhe.

Gruss Michael
 
Danke,

aber mein Problem liegt daran, dass ich bestimmte Buchstaben in einer Zeile umranden möchte. Bei verschiedenen Schriftarten sind die Buchstaben verschieden breit. Deswegen dachte ich die Breite der Buchstaben zu holen, damit ich genau positionieren kann.
 
Dann einfach den einzelnen Buchstaben übergeben.

Also nen String mit nur einem Zeichen.

CString strText - übrigens, hatte ich eben vergessen;-)

Zur Positionierung von nem Rahmen sollte man dann den Zeichensatz davor auf die selbe Art und Weise bestimmen.

Gruss Michael
 
Für die Bestimmung von Stringabmessungen gibt es die Methode CDC::GetTextExtent():
Code:
CDC *pDC;  // Device Context mit dem richtigen Font holen oder erzeugen

CSize size = pDC->GetTextExtent(_T("A"), 1);
Gruß
MCoder
 
Wieder was gelernt;-)
Aber macht die nicht das selbe wie in meinem Beispiel :confused: Muss doch da bestimmt auch noch die Font setzen und hab so keine Quell-Code-Minimierung. Wie sieht das denn mit der Laufzeit aus?

Gruss Michael
 
@CodeFatal
Doch, macht im Prinzip schon das Gleiche. GetTextExtent funktioniert etwas abstrakter, d.h. es wird nur der Text betrachtet, eine vorhandene Clipping Region wird z.B. nicht berücksichtigt. Den Font muss man natürlich ggf. auch noch setzen, je nachdem woher der Device Context stammt. Zur Laufzeit kann ich nichts sagen, wird sich wohl nichts nehmen.

Gruß
MCoder
 
Zurück