whizzle Geschrieben 18. Januar 2002 Teilen Geschrieben 18. Januar 2002 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?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 18. Januar 2002 Teilen Geschrieben 18. Januar 2002 Ähhhmmmm kannst du bitte mal erklaeren, was an deinen Werten so merkwuerdig sein soll?.....Ich kanns scheinbar nicht erkennen...bin wohl zu dumm dazu Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
whizzle Geschrieben 18. Januar 2002 Autor Teilen Geschrieben 18. Januar 2002 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ß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 18. Januar 2002 Teilen Geschrieben 18. Januar 2002 Hmmm so auf die Schnelle faellt mir dazu leider nix ein, aber falls ich heut noch n bissl zeit hab werd ich mal drueber sinieren Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
paule22 Geschrieben 18. Januar 2002 Teilen Geschrieben 18. Januar 2002 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; ... } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
whizzle Geschrieben 21. Januar 2002 Autor Teilen Geschrieben 21. Januar 2002 Nö, so ähnlich schaut's auch bei mir aus. Aber wenigstens bekommst Du realistische Werte. Vielleicht bleiben die ja bei Dir konstant, weil die Änderung der Schriftgröße fehlschlägt?? Sicher das letzteres funktioniert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.