Pixel in MM geht nicht unter Vista?
Verfasst: 25.05.2007 10:04
Hiho!
Ich muss aus einer Millimeter-Anzahl errechnen, wie sie am Besten auf den Bildschirm passt. Also wenn in meiner Datei "100mm" steht, muss ich das so umrechnen, dass es mit diesem Bildschirm und der momentanen Auflösung auch 100mm ergibt. Hier der soweit funktionierende Codeschnippsel:
Klar, jetzt fehlt noch der ganze Callback Mist, aber das tut ja auch nichts zur Sache 
Sobald ich jetzt aber auf meinem neu aufgesetzten Vista-PC das Programm ausführe, erhalte ich bei 100x100 nur noch 73mm auf dem Bildschirm. Das Gleiche auf einem anderen Notebook, mit XPPro SP2. Bei einem anderen Kollegen mit einem Notebook und XPPro SP2 läuft alles nach Maß. Und als ich noch XP drauf hatte,m war das Maß auch korrekt.
Das verwirrt mich
Hat jemand schonmal so eine Umrechnung geschrieben?
Gr33tz
Tafkadasom2k5
Ich muss aus einer Millimeter-Anzahl errechnen, wie sie am Besten auf den Bildschirm passt. Also wenn in meiner Datei "100mm" steht, muss ich das so umrechnen, dass es mit diesem Bildschirm und der momentanen Auflösung auch 100mm ergibt. Hier der soweit funktionierende Codeschnippsel:
Code: Alles auswählen
LOCAL lWidth, lHeight AS LONG
lWidth = 100 '100 mm Breite
lHeight = 100 '100mm Höhe
LOCAL hDC AS DWORD
hDC = GetWindowDC(GetDesktopWindow())
LOCAL lWidthPX, lHeightPX, lWidthMM, lHeightMM AS LONG
lWidthMM = GetDeviceCaps(hDC, %HORZSIZE) 'Screenbreite in MM
lHeightMM = GetDeviceCaps(hDC, %VERTSIZE)'Screenhöhe in MM
lWidthPX = GetDeviceCaps(hDC, %HORZRES)'Screenbreite in px
lHeightPX = GetDeviceCaps(hDC, %VERTRES)'Screenhöhe in px
ReleaseDC GetDesktopWindow(), hDC
LOCAL hNewWindow AS DWORD
LOCAL lNW_Width, lNW_Height AS LONG
lNW_Width = (lWidthPX/lWidthMM)*lWidth
lNW_Height= (lHeightPX/lHeightMM)*lHeight
DIALOG NEW PIXELS, GetDesktopWindow(), "Fenster mit den Maßen 100mm x 100mm", 40, 40,lNW_Width, lNW_Height, %WS_CHILD OR _
%WS_BORDER OR %WS_CLIPSIBLINGS OR _
%WS_VISIBLE OR %DS_NOFAILCREATE OR _
%DS_SETFONT OR %WS_SYSMENU OR %WS_CAPTION OR_
%WS_DLGFRAME, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT _
OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hNewWindow

Sobald ich jetzt aber auf meinem neu aufgesetzten Vista-PC das Programm ausführe, erhalte ich bei 100x100 nur noch 73mm auf dem Bildschirm. Das Gleiche auf einem anderen Notebook, mit XPPro SP2. Bei einem anderen Kollegen mit einem Notebook und XPPro SP2 läuft alles nach Maß. Und als ich noch XP drauf hatte,m war das Maß auch korrekt.
Das verwirrt mich

Hat jemand schonmal so eine Umrechnung geschrieben?
Gr33tz
Tafkadasom2k5