#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
	Local $hGUI = GUICreate("String Höhe & Breite.")
	GUISetState(@SW_SHOW, $hGUI)

	Local $sText = "Das ist ein wenig Text" ; Der Text von dem wir die Höhe und Breite haben möchten.
	Local $aStringDimension = GetStringDimensions($hGUI, $sText) ; Gibt ein 1 Dimensionales Array zurück indem $aArray[0] gleich Breite und $aArray[1] gleich Höhe ist.

	MsgBox(0, "String Höhe und Breite", 'Die Höhe und Breite des Strings "' & $sText & '" ist:' & @CRLF & _
			"Breite: " & $aStringDimension[0] & @CRLF & _
			"Höhe: " & $aStringDimension[1] & @CRLF)
	Do
		Sleep(50)
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

Func GetStringDimensions($hWnd, $sText)
	Local $hDC = _WinAPI_GetDC($hWnd) ; Holt den Device-Context des aktuellen Fensters
	Local $hFont = _SendMessage($hWnd, $WM_GETFONT) ; Ermittelt die Schriftart die benutzt wurde, womit das Control den Text schreibt
	Local $hSelectObject = _WinAPI_SelectObject($hDC, $hFont) ; Makiert das Object vom Context-Device
	Local $tSIZE = _WinAPI_GetTextExtentPoint32($hDC, $sText) ; Ermittelt die Höhe und Breite des Strings.

	_WinAPI_SelectObject($hDC, $hSelectObject)
	_WinAPI_ReleaseDC($hWnd, $hDC) ; Release den Device-Context
	Local $aReturn[2] = [DllStructGetData($tSIZE, 1), DllStructGetData($tSIZE, 2)] ; Gibt die Höhe und Breite als Array zurück
	Return $aReturn
EndFunc   ;==>GetStringDimensions