ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 07.02.2002

Diese Seite wurde zuletzt aktualisiert am 07.02.2002
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für IE, Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss der AVB-Web-Site zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Bildschirm-Infos

Zurück...


Anzeige

(-hg) mailto:hg_vbascreenres@aboutvb.de

Einige Office-Anwendungen stellen Ihnen die aktuelle Bildschirmgröße direkt zur Verfügung. So finden Sie beispielsweise in den Eigenschaften HorizontalResolution und VerticalResolution des System-Objekts der Word-Bibliothek die Breite und die Höhe des Bildschirms in Pixels:

Breite = System.HorizontalResolution
Höhe = System.VerticalResolution

Doch in der Access-Bibliothek fehlt diese Möglichkeit. Und in keiner der Bibliotheken der Office-Anwendungen finden Sie eine direkte oder indirekte Möglichkeit, die aktuelle Bildschirmauflösung in Erfahrung zu bringen (die Bildschirmauflösung hängt davon ab, ob der Anwender in den Bildschirmeinstellungen Große oder Kleine Bildschirmschriften oder eine beliebige Schriftgröße eingestellt hat).

Die gesuchten Werte liefert dagegen immer aktuell die API-Funktion GetDeviceCaps. Sie wird für den Gerätekontext (DC) eines bestimmten Geräts aufgerufen, etwa eines Druckers oder eben des Bildschirms. Den Gerätekontext des Bildschirms erhalten Sie über die API-Funktion GetDC, der Sie als Fenster-Handle für den ganzen Bildschirm den Wert 0 übergeben. Nach der Verwendung des Gerätekontextes müssen Sie daran denken, ihn wieder mit der API-Funktion ReleaseDC freizugeben.

Neben dem Gerätekontext übergeben Sie der Funktion GetDeviceCaps einen Index, zu dem Sie den gewünschten Wert erhalten wollen. Zum Beispiel die Bildschirmhöhe und die Bildschirmbreite liefern auf diese Weise die beiden folgenden Hilfsfunktionen ScreenHeightPixels und ScreenWidthPixels:

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

Private Const HORZRES = 8
Private Const VERTRES = 10

Public Property Get ScreenHeightPixels() As Long
  Dim nDC As Long
  
  nDC = GetDC(0)
  ScreenHeightPixels = GetDeviceCaps(nDC, VERTRES)
  ReleaseDC 0, nDC
End Property

Public Property Get ScreenWidthPixels() As Long
  Dim nDC As Long
  
  nDC = GetDC(0)
  ScreenWidthPixels = GetDeviceCaps(nDC, HORZRES)
  ReleaseDC 0, nDC
End Property

Die fehlende Information über die Bildschirmauflösung erhalten Sie über die Funktion GetDeviceCaps. Sie liefert Ihnen direkt die vertikale und die horizontale Bildschirmauflösung in dpi (Dots per Inch):

Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90

Public Property Get dpiX() As Long
  Dim nDC As Long
  
  nDC = GetDC(0)
  dpiX = GetDeviceCaps(nDC, LOGPIXELSX)
  ReleaseDC 0, nDC
End Property

Public Property Get dpiY() As Long
  Dim nDC As Long
  
  nDC = GetDC(0)
  dpiY = GetDeviceCaps(nDC, LOGPIXELSY)
  ReleaseDC 0, nDC
End Property

Scheinbar sind die vertikale und die horizontale Auflösung immer gleich. Doch sollten Sie sich nicht darauf verlassen - es mag durchaus das eine oder andere Bildschirmgerät mit unterschiedlicher horizontaler und vertikaler Auflösung geben.

Aus der Bildschirmauflösung in dpi können Sie zusätzlich noch den vertikalen und den horizontalen Umrechnungsfaktor für die Maßeinheit TWIPS ermitteln. Diese ist ein bei vielen externen Steuerelementen (wie etwa den Microsoft Common Controls) verwendeter Standard für bildschirmbezogene Abmessungen. Diese Maßeinheit errechnet sich als 1440tel der horizontalen bzw. vertikalen Bildschirmauflösung, wie sie von GetDeviceCaps geliefert wird.

Public Property Get TwipsPerPixelX() As Single
  Dim nDC As Long
  
  nDC = GetDC(0)
  TwipsPerPixelX = 1440 / GetDeviceCaps(nDC, LOGPIXELSX)
  ReleaseDC 0, nDC
End Property

Public Property Get TwipsPerPixelY() As Single
  Dim nDC As Long
  
  nDC = GetDC(0)
  TwipsPerPixelY = 1440 / GetDeviceCaps(nDC, LOGPIXELSY)
  ReleaseDC 0, nDC
End Property

Die Bildschirmgröße in TWIPS erhalten Sie dementsprechend über die folgenden Funktionen ScreenWidthTWIPS und ScreenHeightTWIPS:

Public Property Get ScreenHeightTWIPS() As Single
  Dim nDC As Long
  
  nDC = GetDC(0)
  ScreenHeightTWIPS = GetDeviceCaps(nDC, VERTRES) * _
   (1440 / GetDeviceCaps(nDC, LOGPIXELSY))
  ReleaseDC 0, nDC
End Property

Public Property Get ScreenWidthTWIPS() As Single
  Dim nDC As Long
  
  nDC = GetDC(0)
  ScreenWidthTWIPS = GetDeviceCaps(nDC, HORZRES) * _
   (1440 / GetDeviceCaps(nDC, LOGPIXELSX))
  ReleaseDC 0, nDC
End Property

Modul modScreenRes (modScreenRes.zip - ca. 0,7 KB)



VBA-Übersicht

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer