OpenWindow auf zweitem Desktop

Anfängerfragen zum Programmieren mit PureBasic.
pws32
Beiträge: 52
Registriert: 27.09.2004 12:33

OpenWindow auf zweitem Desktop

Beitrag 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
ich weis das ich nix weis
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: OpenWindow auf zweitem Desktop

Beitrag 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 /:->
a²+b²=mc²
pws32
Beiträge: 52
Registriert: 27.09.2004 12:33

Re: OpenWindow auf zweitem Desktop

Beitrag 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
ich weis das ich nix weis
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: OpenWindow auf zweitem Desktop

Beitrag 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)
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: OpenWindow auf zweitem Desktop

Beitrag von Tommy »

wer zuerst kommt, mahlt zuerst ;)
PB 5.41 x64
pws32
Beiträge: 52
Registriert: 27.09.2004 12:33

Re: OpenWindow auf zweitem Desktop

Beitrag von pws32 »

Ok habe ich nicht drüber nachgedacht, werde mich bessern
ich weis das ich nix weis
Antworten