Seite 1 von 1

MultiMonitor-Support

Verfasst: 29.01.2012 18:38
von ts-soft
Die folgenden Proceduren sind nicht auf meinen Mist gewachsen, bis auf kleinere Anpassungen, sollten IMHO
hier aber zusammengefasst gefunden werden.

DesktopFromPoint(x, y) ist von freak, original im engl. Forum: http://www.purebasic.fr/english/viewtop ... 51#p321351
Ich denke mal, man muss nicht erklären was die Procedure macht.

Code: Alles auswählen

Procedure DesktopFromPoint(x, y)
  Protected Count = ExamineDesktops()
  Protected i, dx, dy, dw, dh
  
  For i = 0 To Count - 1
    dx = DesktopX(i)
    dy = DesktopY(i)
    dw = DesktopWidth(i)
    dh = DesktopHeight(i)

    If x >= dx And x <= dx + dw And y >= dy And y <= dy + dh
      ProcedureReturn i
    EndIf 
  Next i 
 
  ProcedureReturn -1 ; point is outside of all monitors
EndProcedure
Die nächste Procedure baut auf STARGÅTE sein Beispiel auf und ist hier: http://www.purebasic.fr/german/viewtopi ... 62#p298762 zu finden

Code: Alles auswählen

EnableExplicit

Structure MaxDesktopsRes
  CountDesktops.w
  MinPos.w
  MaxPos.w
  MaxWidth.w
  MaxHight.w
EndStructure

Procedure DesktopsMaxRes(*r.MaxDesktopsRes)
  Protected Desktops.i = ExamineDesktops()
  Protected Desktop.i
  Protected X.i, Y.i, X1.i, Y1.i, X2.i, Y2.i

  For Desktop = 0 To Desktops-1
     If DesktopX(Desktop) < X
        X1 = DesktopX(Desktop)
     EndIf
     If DesktopY(Desktop) < Y
        Y1 = DesktopY(Desktop)
     EndIf
     If DesktopX(Desktop)+DesktopWidth(Desktop) > X2
        X2 = DesktopX(Desktop)+DesktopWidth(Desktop)
     EndIf
     If DesktopY(Desktop)+DesktopHeight(Desktop) > Y2
        Y2 = DesktopY(Desktop)+DesktopHeight(Desktop)
     EndIf
  Next
  
  *r\CountDesktops = Desktops
  *r\MinPos = X1
  *r\MaxPos = Y2
  *r\MaxWidth = X2-X1
  *r\MaxHight = Y2-Y1
EndProcedure

Define res.MaxDesktopsRes
DesktopsMaxRes(@res)

Debug res\CountDesktops
Debug res\MinPos
Debug res\MaxPos
Debug res\MaxWidth
Debug res\MaxHight
Wenn noch jemand speziellen Code für MultiMonitor-Support hat, einfach hier posten.

Gruß
Thomas

Re: MultiMonitor-Support

Verfasst: 29.01.2012 18:40
von RSBasic
Danke für die Zusammenfassung. :allright: