Zum Inhalt springen

GetTextExtendPoint32(): Welche Einheit hat die Textgröße??


whizzle

Empfohlene Beiträge

Hallo zusammen,

ich habe folgendes Problem: Ich möchte mittels der Funktion GetTextExtentPoint32() die Größe eines Strings ermitteln, eigentlich ganz simpel. Unter W9x hat dass immer doll geklappt, aber nu versuch ich's zum erstenmal unter W2k und bekomme sehr merkwürdige Werte zurück, obwohl diese doch die Größe in logischen Einheiten angeben sollten, oder? Hier mal ein konkretes Beispiel:

Schrift: Arial

Schriftgröße: 12 Pt (Wert 120 in der LOGFONT-Struktur)

Mapping-Mode: MM_TEXT

Ergebnis der Funktion GetTextExtentPoint32() beim String "H"

SIZE.cx == 78

SIZE.cy == 120

Kann mir das einer erklären? Inflation? Euro-Umstellung?? ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Na ja, halt folgendes:

Wenn die Angaben in der SIZE-Struktur die Größe des Strings in logischen Einheiten wiedergeben (der Mapping-Mode ist - wie gesagt - MM_TEXT, demnach sind die Einheiten "Pixel"), dann ist mein String (in diesem Fall ein einfaches 'H') 78 mal 120 Pixel groß. Und das finde ich sehr, sehr groß, schließlich ist die Schriftgröße 12 Pt...

Wenn man's mal andersherum rechnet: 12 Pt sind 12/72 Zoll, also 1/6 Zoll. Bei der Windows-Einstellung "Kleine Schriftarten" entsprechen 96 Pixel einem Zoll, also müsste eine 12 Pt-Schrift 16 Pixel groß sein (und nicht 120). Natürlich stimmt diese Rechnung für Monitore nur begrenzt, aber eine Abweichung von immerhin 650% würden mir schon die Tränen in die Augen treiben...

Oder rechne ich die ganze Geschicht einfach falsch?

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

würde mich auch mal interessieren, woher diese Funktion ihre Werte nimmt ...

wenn ich GetText... unter verwendung von H verwende kommt bei mir x = 10 y = 16 raus.

in der Win32-Help steht ...

"The GetTextExtentPoint32 function uses the currently selected font to compute the dimensions of the string. The width and height, in logical units, are computed without considering any clipping."

ändere ich aber den Font auf 8 oder 16 oder weis der Geier, bleiben immer noch die oben genannten Werte stehen.

Sehr merkwürdige Funktion:

ich verwende doch keinen anderen Code als ihr???

{

SIZE z;

...

GetTextExtentPoint32(

GetDC(Edit1->Handle),

Edit1->Text.c_str(),

strlen(Edit1->Text.c_str()),

&z);

Label1->Caption = z.cx;

Label2->Caption = z.cy;

...

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...