Seite 1 von 1

OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 19:22
von pws32
Hallo

ich suche nach einer möglichkeit ein Window bei bedarf auf einen zweiten Monitor zu öffnen ich habe auch schon im englischen forum eine Lösung gefunden aber leider nur für OSX habe den Code modifziert und poste den mal hier, weis vielleicht jemand wie man das unter Windows machen könnte oder noch besser wäre eine Crossplattform lösung

Viele Grüße

Code: Alles auswählen

mainWindow = OpenWindow(0,50,50,300,300,"Main Window",#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget|#PB_Window_SystemMenu)
ButtonGadget(1,10,10,250,50,"2nd Window ON/OFF")
ButtonGadget(2,10,60,250,50,"Send Message to 2nd Window")    
 If mainWindow   
    Repeat
      Event = WaitWindowEvent()
     
     Select Event
     
       Case #PB_Event_Gadget
         
         Select EventGadget()
          Case 1 
            If externalWindow = 1
              externalWindow = 0
              CloseWindow(AppWindow)
            Else
              ScreenArray = CocoaMessage(0, 0, "NSScreen screens")
              If CocoaMessage(0, ScreenArray, "count") < 2
                Debug "No second screen"
              Else
                externalWindow = 1
                CocoaMessage(@Frame.NSRect, CocoaMessage(0, ScreenArray, "objectAtIndex:", 1), "visibleFrame")
                AppWindow = OpenWindow(#PB_Any, 0, 0, 0, 0, "Second screen window", #PB_Window_BorderLess )
                TextGadget(21, 10, 10, 250, 50, "2nd Windows")              
                CocoaMessage(0, WindowID(AppWindow), "setFrame:@", @Frame, "display:", #YES)    
              EndIf  
            EndIf
          Case 2
              If externalWindow = 1
                SetGadgetText(21, "##### OK ####") ; sen a message to 2nd Monitor  
              EndIf
       EndSelect
       
     EndSelect
    Until Event = #PB_Event_CloseWindow
 EndIf

Re: OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 19:46
von Kiffi
hierfür kann man die Befehle aus der Desktop-Library verwenden.

Grüße ... Peter

Edit: Na super! Crossposting: http://www.purebasic.fr/english/viewtop ... 95#p466395 /:->

Re: OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 20:51
von pws32
problem gelöst, User Kemno aus dem englischen Forum hat die richtige Lösung, ich poste den Code hier vielleicht kann ihn ja jemand mal gebrauchen

Viele Grüße

Code: Alles auswählen

mainWindow = OpenWindow(0,50,50,300,300,"Main Window",#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget|#PB_Window_SystemMenu)
ButtonGadget(1,10,10,250,50,"2nd Window ON/OFF")
ButtonGadget(2,10,60,250,50,"Send Message to 2nd Window")   
 If mainWindow   
    Repeat
      Event = WaitWindowEvent()
     
     Select Event
     
       Case #PB_Event_Gadget
         
         Select EventGadget()
          Case 1
            If externalWindow = 1
              externalWindow = 0
              CloseWindow(AppWindow)
            Else
              If ExamineDesktops() < 2
                Debug "No second screen"
              Else
                externalWindow = 1
                AppWindow = OpenWindow(#PB_Any, 0, 0, DesktopWidth(1), DesktopHeight(1), "Second screen window", #PB_Window_BorderLess )
                TextGadget(21, 10, 10, 250, 50, "2nd Windows")
                
                ; top-left of 2nd desktop
                ;ResizeWindow(AppWindow, DesktopX(1), DesktopY(1), #PB_Ignore, #PB_Ignore)
                
                ; center on 2nd desktop
                ResizeWindow(AppWindow, DesktopX(1) + (DesktopWidth(1) - WindowWidth(AppWindow))/2, DesktopY(1) + (DesktopHeight(1) - WindowHeight(AppWindow))/2, #PB_Ignore, #PB_Ignore)
                
                HideWindow(AppWindow, #False)
              EndIf 
            EndIf
          Case 2
              If externalWindow = 1
                SetGadgetText(21, "##### OK ####") ; sen a message to 2nd Monitor 
              EndIf
       EndSelect
       
     EndSelect
    Until Event = #PB_Event_CloseWindow
 EndIf

Re: OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 21:05
von HeX0R
Ich weiss jetzt nicht was schlimmer ist:
Crossplatform Postings, oder die Bemerkung von Kiffi einfach ignorieren.

Mal eben zur Erklärung:
Es ist sehr unhöflich die selbe Frage in versch. Boards zu stellen, weil es immer Leute gibt, die helfen wollen und sich tatsächlich Gedanken machen und, noch schlimmer, Zeit in ein Problem investieren, dass einem selbst eigentlich ziemlich egal ist.
Wenn man dann am Ende bemerkt, dass in einem anderen Board noch so ein armes Schwein dasselbe gemacht hat, wird es ärgerlich.

Das Gute ist, sobald sich das rumspricht, hilft eh keiner mehr.
Weder im einen, noch im anderen Board. ;)

Also entscheide Dich bitte in Zukunft für ein Board.
(hier hattest Du dasselbe gemacht)

Re: OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 21:16
von Tommy
wer zuerst kommt, mahlt zuerst ;)

Re: OpenWindow auf zweitem Desktop

Verfasst: 15.06.2015 21:17
von pws32
Ok habe ich nicht drüber nachgedacht, werde mich bessern