Seite 1 von 1
OpenScreen auf zweitem Desktop/Monitor
Verfasst: 13.10.2013 01:27
von Regenduft
Moin miteinander,
ich versuche gerade mit OpenScreen() einen Screen auf einem zweiten Desktop/Monitor zu öffnen. Bin mir fast sicher, dass es das Thema schon einmal gab (crossplattform-kompatibel), habe jetzt aber nur eine Lösung per WinAPI gefunden.
Kann mir da jemand weiterhelfen?
Auf die Lösung mit OpenWindowedScreen() bin ich übrigens schon gekommen, allerdings ist die mit einigen Nachteilen behaftet (man ist auf die "Desktopeigenschaften" beschränkt).
Re: OpenScreen auf zweitem Desktop/Monitor
Verfasst: 14.10.2013 12:20
von sibru
Der Monitor ergibt sich aus der Fenster-Position. Standartmäßig werden Dual- oder auch Multi-Screens nebeneinander dargestellt, so dass die X-Positionierung eines Fensters den entsprechenden Monitor bestimmt:
Code: Alles auswählen
#ScreenOut=2 ;2. Monitor soll zur Ausgabe benutzt werden
Screens=ExamineDesktops() ;Anz. vorhandener Monitore ermitteln
Global Dim StartX(Screens) ;je Monitor ein Array-Element (1. Monitor: Index=0)
For Screen=1 To Screens ;alle Monitore durchgehen und StartX()-Array aufbauen
Debug "Screen #"+Str(Screen)+": "+DesktopName(Screen-1)+" ("+Str(DesktopWidth(Screen-1))+" x "+Str(DesktopHeight(Screen-1))+")"
StartX(Screen)=StartX(Screen-1)+DesktopWidth(Screen-1)
Debug "Screen "+Str(Screen)+": von "+Str(StartX(Screen-1))+" bis "+Str(StartX(Screen))
Next
Screen=#ScreenOut : If Screen>Screens : Screen=Screens : EndIf
OpenWindow(1,StartX(Screen-1),0,100,100,"test")
CreateGadgetList(WindowID(1))
StringGadget(1,0,0,50,20,"")
Repeat ;{/========== die SteuerSchleife ==========
Event = WaitWindowEvent()
Select Event
Case #PB_Event_MoveWindow
SetGadgetText(1, Str(WindowX(1))+","+Str(WindowY(1)))
Delay(20)
EndSelect ;}
Until Event = #PB_Event_CloseWindow
Für den Normalanwender reicht´s (auch Queransicht {um 90° gedrehter Monitor} wird hiermit korrekt behandelt...), nun bei mehreren Monitoren übereinander wird´s kompliziert...
Viel Erfolg !!!
Re: OpenScreen auf zweitem Desktop/Monitor
Verfasst: 14.10.2013 16:33
von Regenduft
Danke für Antwort!
Leider ging das aber an meiner Frage vorbei... (trotzdem wird der eine oder andere aber bestimmt von der Antwort profitieren!)
Es geht mir ausdrücklich um OpenScreen(), wo man keine X- und Y-Parameter angibt und daher nur auf dem Hauptmonitor einen Screen öffnen kann.
Wie bereits erwähnt ist mir klar, dass OpenWindowedScreen() eine Lösung wäre, allerdings keine 100%ige, da man weder Auflösung noch Farbtiefe beeinflussen kann, sondern vom Desktop übernehmen muss.
Scheinbar gibt es wirklich keine crossplattform-kompatible Lösung... Habe ich wohl geträumt, dass ich das irgendwo gelesen hatte...