Resumen Large Fonts

>De: pleyva@ssa.siemens.es[SMTP:pleyva@ssa.siemens.es]
>Enviado el: 11 November, 1998 1:21 AM
>Para: visualbasic-esp@egroups.com
>Asunto: (VB-ESP) API para saber el tamaño de fuente
>Hola amigos
>La configuracion del monitor permite especificar el tamaño de fuentes a
>utilizar, y se puede decir que use "fuentes grandes", "fuentes pequeñas" u
>otro tipo de fuentes.
>Existe alguna API para saber que tamaño de fuente tiene configurado un PC
>???

 Article ID: Q152136
Creation Date: 05-JUN-1996
Revision Date: 02-JUL-1996
The information in this article applies to:
Standard, Professional, and Enterprise Editions of Microsoft Visual Basic, 32-bit only, for Windows, version 4.0

SUMMARY
Determining whether Windows 95 or Windows NT 3.51 is using large or small fonts can be done from Visual Basic through Windows API calls. The API that retrieves information about the physical font selected for a device context is GetTextMetrics().

MORE INFORMATION
The theory of determining whether a large or small font is used under Win95 or Windows NT 3.51 is based on the assumption that the Windows display driver uses the default value VGASYS.FON for Small Fonts and 8514SYS.FON for Large Fonts. If the user changes the default system font manually to any other value, this theory will not apply.

Step-by-Step Example
Get the handle of the Desktop window.
Get the Device Context for the entire Desktop window (including borders, scroll bars, captions, menus, and so on).
Set the mapping mode to pixels.
Get the size of the system font.
Reset the mapping mode to its original setting.
Release the device context obtained through a call to GetWindowDC.
If the system font is more than 16 pixels high, then large fonts are being used.

Sample Code
   '** TYPES **
   Type TEXTMETRIC
     tmHeight As Integer
     tmAscent As Integer
     tmDescent As Integer
     tmInternalLeading As Integer
     tmExternalLeading As Integer
     tmAveCharWidth As Integer
     tmMaxCharWidth As Integer
     tmWeight As Integer
     tmItalic As String * 1
     tmUnderlined As String * 1
     tmStruckOut As String * 1
     tmFirstChar As String * 1
     tmLastChar As String * 1
     tmDefaultChar As String * 1
     tmBreakChar As String * 1
     tmPitchAndFamily As String * 1
     tmCharSet As String * 1
     tmOverhang As Integer
     tmDigitizedAspectX As Integer
     tmDigitizedAspectY As Integer
   End Type

   '** Win32 API DECLARATIONS **
   Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" _
    (ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long
   Declare Function GetDesktopWindow Lib "user32" () As Long
   Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
   Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc _
    As Long) As Long
   Declare Function SetMapMode Lib "gdi32" (ByVal hdc As Long, ByVal _
   nMapMode As Long) As Long

   '** CONSTANTS **
   Global Const MM_TEXT = 1

   '** Function **
   Public Function gbl_GetFontRes$()
   Dim hdc, hwnd, PrevMapMode As Long
   Dim tm As TEXTMETRIC

     ' Set the default return value to small fonts
     gbl_GetFontRes$ = "VGA"

     ' Get the handle of the desktop window
     hwnd = GetDesktopWindow()

     ' Get the device context for the desktop
     hdc = GetWindowDC(hwnd)
     If hdc Then
       ' Set the mapping mode to pixels
       PrevMapMode = SetMapMode(hdc, MM_TEXT)

       ' Get the size of the system font
       GetTextMetrics hdc, tm

       ' Set the mapping mode back to what it was
       PrevMapMode = SetMapMode(hdc, PrevMapMode)

       ' Release the device context
       ReleaseDC hwnd, hdc

       ' If the system font is more than 16 pixels high,
       ' then large fonts are being used
       If tm.tmHeight > 16 Then gbl_GetFontRes$ = "8514"
     End If

   End Function



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com