vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Desktop/Bildschirm/Display   |   VB-Versionen: VB4, VB5, VB608.06.01
Eingestellte Anzeige-Schriftgröße prüfen

Eine Routine zum Prüfen, ob kleine Schriftarten oder große Schriftarten eingestellt ist.

Autor:   Dieter OtterBewertung:  Views:  24.466 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Als kleine Ergänzung zu unserem gestrigen Tipp  Bildschirm-Einstellungen ermitteln und ändern möchten wir Ihnen heute eine Routine vorstellen, welche prüft, ob "kleine Schriftarten" oder "große Schriftarten" in den Anzeige-Einstellungen eingestellt ist.

Eine Prüfung der Schriftgröße ist z.B. dann sinnvoll, wenn Formulare (Datenmasken) Ihrer Anwendung nicht mehr korrekt dargestellt werden können, sollte "große Schriftarten" eingestellt sein.

Sie wissen gar nicht, wie Ihre Formulare dargestellt werden, wenn "große Schriftarten" eingestellt ist?
Dann probieren Sie es einmal aus. Klicken Sie auf einen freien Bereich des Windows-Desktops und wechseln im darauf erscheinenden Dialog in das Register "Einstellungen". Hier befindet sich unterhalb der Auswahl der Bildschirmauflösung eine Schaltfläche Erweitert, über welche Sie die Schriftarten-Größe ändern können.

Sollte sich bei der Prüfung herausstellen, daß auch Ihre Formulare nicht so angezeigt werden, wie sie eigentlich sollten, empfiehlt es sich eine entsprechende Prüfung in das Programm einzubauen und dann ggf. den Anwender darauf hinzuweisen.

Und hier die Routine, die es möglich macht

Option Explicit
 
' zunächst die benötigten API-Deklarationen
Private Declare Function GetDesktopWindow Lib "user32" () As Long
 
Private Declare Function GetDC Lib "user32" ( _
  ByVal hWnd As Long) As Long
 
Private Declare Function GetDeviceCaps Lib "gdi32" ( _
  ByVal hdc As Long, _
  ByVal nIndex As Long) As Long
 
Private Declare Function ReleaseDC Lib "user32" ( _
  ByVal hWnd As Long, _
  ByVal hdc As Long) As Long

Über die GetDeviceCaps-Funktion lässt sich u.a. die festgelegte Einstellung der eingestellten Schriftarten-Größe ermitteln. Die Funktion gibt die Schriftgröße in dpi zurück. Mit dieser Information lässt sich dann leicht prüfen, ob die normale Einstellung "kleine Schriftarten" verwendet wird. Die normal Schriftgröße beträgt 96 dpi.

' Prüft, ob kleine oder große Schrift in den
' Anzeige-Einstellungen festgelegt wurde
' True = kleine Schrift
' False = große Schrift
Public Function CheckForSmallFonts() As Boolean
  Const LOGPIXELSX = 88
 
  Dim hWndDesk As Long
  Dim hDCDesk As Long
  Dim logPix As Long
 
  hWndDesk = GetDesktopWindow()
  hDCDesk = GetDC(hWndDesk)
  logPix = GetDeviceCaps(hDCDesk, LOGPIXELSX)
  Call ReleaseDC(hWndDesk, hDCDesk)
 
  CheckForSmallFonts = (logPix = 96)
End Function

Jetzt fehlt nur noch der Funktionsaufruf
Dieser sollte möglichst gleich beim Programmstart erfolgen - also in der Sub Main oder im Startforumlar.

Private Sub Form_Load()
  ' beim Programmstart "Schriftgröße" prüfen
  If Not CheckForSmallFonts() Then
    ' "große Schriftarten" ist eingestellt
    If MsgBox("In den Windows-Einstellungen für die " & _
      "Bildschirmanzeige ist die Schriftgröße nicht " & _
      "auf 'kleine Schriftarten' eingestellt. Dies " & _
      "führt in einigen Bildschirmmasken zu " & _
      "Darstellungsproblemen", 65) = vbCancel Then
      End
    End If
  End If
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.