DPI (96, 120, etc.) von VB6 aus abfragen

07/03/2012 - 09:00 von Hermie | Report spam
Hallo!

In der Systemsteuerung kann ich ja DPI àndern.
Ich schaffe es aber nicht, diesen Wert von VB6 aus abzufragen.

Ich habe bisher Folgendes probiert (diese Einstellungen àndern sich aber
nicht mit der DPI-Änderung):

1)
Screen.TwipsPerPixelX, bzw. Screen.TwipsPerPixelY

2)
Private Function GetDPI() As Long

Dim hWndDesk As Long
Dim hDCDesk As Long
Dim r As Long
hWndDesk = GetDesktopWindow()
hDCDesk = GetDC(hWndDesk)

Dim l&
l = GetDeviceCaps(hDCDesk, 88) 'LOGPIXELSX

r = ReleaseDC(hWndDesk, hDCDesk)

GetDPI = l

End Function

Gibt es noch etwas Anderes, oder mache ich etwas falsch?

Danke.

Gruß,
Hermann
 

Lesen sie die antworten

#1 Martin KoWi
07/03/2012 - 09:24 | Warnen spam
Moin,

Du brauchst ein manifest mit:
<dpiAware>true</dpiAware>

Das Thema ist komplexer als man denkt, such mal nach "DPI-virtualization"

gruß, martin.

Am 07.03.2012 09:00, schrieb Hermie:
Hallo!

In der Systemsteuerung kann ich ja DPI àndern.
Ich schaffe es aber nicht, diesen Wert von VB6 aus abzufragen.

Ich habe bisher Folgendes probiert (diese Einstellungen àndern sich aber
nicht mit der DPI-Änderung):

1)
Screen.TwipsPerPixelX, bzw. Screen.TwipsPerPixelY

2)
Private Function GetDPI() As Long

Dim hWndDesk As Long
Dim hDCDesk As Long
Dim r As Long
hWndDesk = GetDesktopWindow()
hDCDesk = GetDC(hWndDesk)

Dim l&
l = GetDeviceCaps(hDCDesk, 88) 'LOGPIXELSX

r = ReleaseDC(hWndDesk, hDCDesk)

GetDPI = l

End Function

Gibt es noch etwas Anderes, oder mache ich etwas falsch?

Danke.

Gruß,
Hermann

Ähnliche fragen