Mehrere Monitore, zugriff auf Screen.Width

05/01/2010 - 09:36 von Jens Müller | Report spam
Hallo,

mein Programm soll beim Start an die selbe Position gesetzt werden, wie beim
letzten Ausführen vorher.
Dazu merke ich mir die .Left und .Width Positionen der Form.

Im Falle, dass die Auflösung geàndert (verringert) wurde, habe ich folgende
Prüfung, um sicherzustellen, dass das Formular dann noch sichtbar bleibt:
If Me.Left > Screen.Width - 200 Then
Me.Left = Screen.Width - 200
End If

Im Falle, dass zwei Monitore zugleich aktiviert sind ("erweiterter Desktop")
fuktioniert das nicht: Wenn die Form auf dem erweiterten Monitor
positioniert ist, die Me.Left > Screen.Width.

Ist es möglich
-herauszufinden, ob der Dektop erweitert ist
-die Breite und Höhe des erweiterten Bildschrimbereichs zu erfahren?

Danke und Grüße,
Jens
 

Lesen sie die antworten

#1 Charles Panke
05/01/2010 - 10:03 | Warnen spam
Hallo Jens,

Ist es möglich
-herauszufinden, ob der Dektop erweitert ist
-die Breite und Höhe des erweiterten Bildschrimbereichs zu erfahren?



so mache ich das:

Private Type ArbeitsFlaeche
Left As Long
Top As Long
Width As Long
Height As Long
Right As Long
Bottom As Long
End Type

Private Function ScreenSize() As ArbeitsFlaeche

Dim AnzahlMonitore As Long
'--

AnzahlMonitore = GetSystemMetrics(SM_CMONITORS)

If AnzahlMonitore > 0 Then
With ScreenSize
.Left = GetSystemMetrics(SM_XVIRTUALSCREEN)
.Top = GetSystemMetrics(SM_YVIRTUALSCREEN)
.Width = GetSystemMetrics(SM_CXVIRTUALSCREEN)
.Height = GetSystemMetrics(SM_CYVIRTUALSCREEN)
.Bottom = .Top + .Height
.Right = .Left + .Width
End With
End If

End Function


Viele Gruesse,
-C-H-A-R-L-E-S-

Ähnliche fragen