Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textbreite mit GetTextExtentPoint bestimmen

Textbreite mit GetTextExtentPoint bestimmen
Andreas
Hallo,
ich habe per Suchmaschine eine Funktion gefunden, mit der es möglich ist, die Breite eines Strings zu bestimmen:

Private Type SIZE
cx As Long
cy As Long
End Type
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPointA" (ByVal  _
hDC As Long, ByVal lpszStr As String, ByVal cchString As Long, lpSize As SIZE) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Public Function GetTxtPxLen(ByVal sTxt As String) As Long
Dim hWnd As Long
Dim hDC As Long
Dim sz As SIZE
hWnd = GetForegroundWindow()
If hWnd Then
hDC = GetDC(hWnd)
If hDC Then
GetTextExtentPoint32 hDC, sTxt, Len(sTxt), sz
ReleaseDC hWnd, hDC
GetTxtPxLen = sz.cx
End If
End If
End Function
Ich wüsste nun sehr gern, welcher Font von Funktion GetTextExtentPoint32 bei der Berechnung zugrunde gelegt wird. Ich konnte hierzu nur folgende Information finden:
The GetTextExtentPoint32 function uses the currently selected font to compute the dimensions of the string.
Kann mir jemand verraten, wie ich mir den "currently selected font" anzeigen lassen kann? Optimal wäre es, wenn ich ihn auch noch verändern könnte.
Grüße
A.M.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textbreite mit GetTextExtentPoint bestimmen
28.05.2012 18:10:43
Reinhard
Hallo Andreas,
soweit ich zu wissen glaube sind z.B. die Zahlwerte bei der Spaltenbreite abhängig
von der Schriftart die in der Systemsteuerung festgelegt ist. Da von der Breite der 0.
Vielleicht spielt das hier auch eine Rolle, k.A.
Wie man die Standardschriftart per Vba ändern kann müßte im Archiv zu finden sein.
Frage noch offen.
Gruß
Reinhard
AW: Textbreite mit GetTextExtentPoint bestimmen
28.05.2012 18:24:48
Andreas
Hallo Reinhard,
danke für Deine Antwort! Es handelt sich aber vermutlich nicht um den Standardfont von Excel, sondern um eine Windows-Einstellung. Vielleicht meldet sich ja noch ein API-Spezialist, der weiss, wie man die abfragen kann.
Gruß
Andreas
Anzeige
AW: Textbreite mit GetTextExtentPoint bestimmen
28.05.2012 18:30:53
Reinhard
Hallo Andreas,
Excel bezieht sich auf den Standardfont von Windows bei Spaltenbreiten.
Excels Standardfont für Zellen ist etwas anderes.
Den meinte ich nicht.
Gruß
Reinhard
AW: Textbreite mit GetTextExtentPoint bestimmen
28.05.2012 18:41:15
Andreas
Hallo Reinhard,
vielleicht hilft mir das dann doch ein wenig weiter. An den Excel-Einstellungen habe ich nämlich bereits herumgespielt, ohne dass sich das Ergebnis der Funktion bei einem Teststring geändert hätte. Weisst Du vielleicht, wo sich der Standardfont bei Win7 versteckt? Kann man den über einen Menüpunkt ändern oder läuft das nur über die Registry (wo ich vor Stunden etwas von "Tahoma" in mir unklaren Zusammenhängen gefunden habe)?
Gruß
Andreas
Anzeige
AW: Textbreite mit GetTextExtentPoint bestimmen
28.05.2012 18:54:05
Reinhard
Hallo Andreas,
wie du den Win-Standardfont manuell abändern kannst, auch Einstellungen für Dezimaltrenner, Punkt oder Komma, weiß ich, geht über Systemsteuerung.
Mit Vba kann man das auch, deshalb empfahl ich dir die Archivsuche.
Möglich daß in der Lsg API benutzt wird, kann aber auch gut sein daß da steht:
CreateObject(...)
Dafür hat Excel keinen Menupunkt. Wird wohl in User.dat oder/und system.dat stehen, also den beiden
Dateien die man als Registry bezeichnet/kennt.
Für Registry abänderungen müßte es auch Code im Archiv geben.
Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge