Page 1 sur 1

Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 10:52
par Micoute
Bonjour à tous,

dans le cas d'un système multi écrans, j'aimerais savoir s'il est possible d'afficher une fenêtre sur l'écran de son choix ?

Je vous remercie tous pour l'aide que vous allez m'apporté

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 11:10
par falsam
Bureau étendu sur les deux écrans je suppose ?

Utilise ExamineDesktops()

Si affichage sur écran 2
utilise DesktopWidth() pour trouver la largeur du premier écran. Tu auras la coordonnées x de ton ecran 2

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 11:27
par GallyHC
Bonjour,

J'avais fait un code pour envoyer une fenêtre sur les divers écran possible. La y a juste une fenêtre et un bouton, quand on clique sur le bouton la fenêtre bascule d'écran.
Voila l'adresse : http://www.koakdesign.info/pbfrance/?ur ... wer&val=77

Cordialement,
GallyHC

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 12:00
par Ollivier
Merci pour le lien GallyHC.

Pour compléter l'explication de Falsam, chez bicrosoft, les écrans se succèdent, comme le linge étendu sur un fil : tu as le T-Short "Ecran principal", tenu avec 2 pinces à linge, puis sur sa droite, le mouchoir en tissu brodé "Ecran secondaire" avec 2 pinces à linge aussi.

Cette disposition permet de choisir son écran en modifiant simplement le paramètre x d'une fenêtre. D'où le bon conseil de Falsam, plus haut.

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 12:08
par GallyHC
Bonjour,

Pour compléter aussi un peu olivier tout cela est valable si l'affichage multiple est bien en mode étendu.

Cordialement,
GallyHC

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 13:29
par falsam
Petit code pour mettre en pratique ce que j'ai dit précédemment.

Je pars du principe qu'il n'y a que deux moniteur (0 et 1)

Code : Tout sélectionner

Structure NewDesktop
  x.i
  w.i
  h.i
EndStructure

Structure NewExtendedDesktop
  Desktop0.NewDesktop
  Desktop1.NewDesktop
EndStructure

Global Desktop.NewExtendedDesktop

Global CountDesktop = ExamineDesktops(), n

Declare SetupDesktop()
Declare ShowWindow(Desktop = 0)
Declare Exit()

;Initialisation desktop étendue
SetupDesktop()

;Afficher la fenetre sur le desktop 1 (0 par defaut) 
ShowWindow(1) 

;Bizarrerie : Si pas de fenetre l'examinedesktop est plus long
Procedure SetupDesktop()
  OpenWindow(0, 0, 0, 400, 200, "", #PB_Window_Invisible)
  
  ;Configuration du bureau étendu
  If ExamineDesktops() = 2
    Desktop\Desktop0\x = 0
    Desktop\Desktop0\w = DesktopWidth(0)
    Desktop\Desktop0\h = DesktopHeight(0)
    
    Desktop\Desktop1\x = DesktopWidth(0)
    Desktop\Desktop1\w = DesktopWidth(1)
    Desktop\Desktop1\h = DesktopHeight(1)
  EndIf
  
  CloseWindow(0)
EndProcedure

;Affichage de la fenetre de test
Procedure ShowWindow(DesktopNumber = 0)
  Protected x, y = #PB_Ignore, w = #PB_Ignore, h = #PB_Ignore 
  Protected Flag = #PB_Window_SystemMenu | #PB_Window_Maximize | #PB_Window_MaximizeGadget
  
  OpenWindow(0, x, 0, 800, 600, "Ma fenetre", Flag)
    
  If DesktopNumber = 1
    If Flag & Flag & #PB_Window_Maximize
      x = Desktop\Desktop0\w 
      w = Desktop\Desktop1\w
      h = Desktop\Desktop1\h
      
    ElseIf Flag & #PB_Window_ScreenCentered
      x = Desktop\Desktop0\w + Desktop\Desktop1\w / 2 - WindowWidth(0)/2
      
    Else
      x = Desktop\Desktop0\w + WindowX(0)
    EndIf
    
    ResizeWindow(0, x, y, w, h) 
  EndIf
  
  BindEvent(#PB_Event_CloseWindow, @Exit())
  Repeat : WaitWindowEvent() : ForEver  
EndProcedure

Procedure Exit()
  End
EndProcedure
J'ai testé ce code sur un pc connecté à deux moniteurs 17" et 24". Le bureau est étendu sur les deux écrans.

Re: Afficher sur l'écran de son choix

Publié : mar. 21/mars/2017 15:29
par Micoute
Mais tout ça est excellent, énorme merci pour ce partage

Re: Afficher sur l'écran de son choix

Publié : dim. 26/mars/2017 20:31
par venom
Oui il faut faire attention. Car on peut avoir des bureau a gauche, droite mais aussi en haut et bas. :wink:







@++