Page 1 sur 2
OpenWindowedScreen()
Publié : lun. 31/déc./2012 0:34
par Backup
il n'y a pas de moyen de bouger l'ecran en Fenetre !! ( WindowedScreen() )
on peut bouger les fenetres : ResizeWindow()
on peut bouger les Gadgets : ResizeGadget()
mais pour le OpenWindowedScreen() que dalle !!
alors meme qu'il est en principe prévu pour tourner avec des interfaces "Gadgeté"
que ces gadgets peuvent etre cachés , bougés, ajoutés, enlevés .....
pour le Screen ... rien !

me trompais-je ?
j'ai des gadgets a gauche en colonne et le screen a droite ...
on peut modifier la taille de la fenetre , mais si on vire les gadgets a gauche... , le Screen lui ne se met pas a gauche sur la fenetre ...
il reste a la meme place que lorsqu'on l'a créé !du coup , il reste un vide a gauche .....
bref on ne peut pas bouger ce satané Screen APRES Creation !!

c'est balot ...
ps:
en l'occurence, j'aimerai ne pas avoir a tout repasser sous CanvasGadget .. (il ne gere pas l'autostrech.. et j'en ai besoin )

Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 1:09
par graph100
Tiens, Dobro, j'ai la solution à ton problème
Mais je pense que cet usage de OpenWindowedScreen() devrait être documenté !
Code : Tout sélectionner
InitSprite()
OpenWindow(0, 0, 0, 800, 600, "Bouton Gauche pour déplacer, Bouton droit pour redimensionner ;)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ContainerGadget(0, 50, 50, 100,100)
OpenWindowedScreen(GadgetID(0), 0, 0, 100, 100, #True, 0, 0)
balle.POINT\x = 25
balle\y = 50
vitesse.POINT\x = 2
vitesse\y = 1
Repeat
event = WindowEvent()
balle\x + vitesse\x
balle\y + vitesse\y
If balle\x < 5 Or balle\x > 95 : vitesse\x = -vitesse\x : EndIf
If balle\y < 5 Or balle\y > 95 : vitesse\y = -vitesse\y : EndIf
If event = #WM_LBUTTONUP
ResizeGadget(0, WindowMouseX(0), WindowMouseY(0), #PB_Ignore, #PB_Ignore)
EndIf
If event = #WM_RBUTTONUP
ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowMouseX(0) - GadgetX(0), WindowMouseY(0) - GadgetY(0))
EndIf
ClearScreen(0)
If StartDrawing(ScreenOutput())
Circle(balle\x, balle\y, 5, #Red)
StopDrawing()
EndIf
FlipBuffers()
Until event = #PB_Event_CloseWindow
J'ai essayé rapidement, et ça marche chez moi, sans planter...
Au cas ou : clique sur la fenetre avec le bouton droit de la souris pour redimensionner le gadget, et le bouton gauche pour le déplacer !
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 10:58
par Micoute
Ça marche mieux comme ça avec PB 5.10b2 et bravo pour ton code
Code : Tout sélectionner
InitSprite()
OpenWindow(0, 0, 0, 800, 600, "Bouton Gauche pour déplacer, Bouton droit pour redimensionner ;)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ContainerGadget(0, 50, 50, 100,100)
OpenWindowedScreen(GadgetID(0), 0, 0, 100, 100, #True, 0, 0)
balle.POINT\x = 25
balle\y = 50
vitesse.POINT\x = 2
vitesse\y = 1
Repeat
event = WindowEvent()
balle\x + vitesse\x
balle\y + vitesse\y
If balle\x < 5 Or balle\x > 95 : vitesse\x = -vitesse\x : EndIf
If balle\y < 5 Or balle\y > 95 : vitesse\y = -vitesse\y : EndIf
If event = #PB_Event_LeftClick ; #WM_LBUTTONUP
ResizeGadget(0, WindowMouseX(0), WindowMouseY(0), #PB_Ignore, #PB_Ignore)
EndIf
If event = #PB_Event_RightClick ; #WM_RBUTTONUP
ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowMouseX(0) - GadgetX(0), WindowMouseY(0) - GadgetY(0))
EndIf
ClearScreen(0)
If StartDrawing(ScreenOutput())
Circle(balle\x, balle\y, 5, #Red)
StopDrawing()
EndIf
FlipBuffers()
Until event = #PB_Event_CloseWindow
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 11:59
par Backup
excellent !
j'avais pourtant essayé le container ...
j'avais surement du le poser au mauvais endroit
bon je te remercie, tu viens de donner un sacré coup de pouce a Pure_Anaglyphe
Merci a vous deux
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 12:53
par Backup
ha oui !! je viens de comprendre pourquoi pour moi ça ne marchait pas
je mettais entre
ContainerGadget(#container....)
OpenWindowedScreen(WindowID(#Window) , 1, 1, X_ecran, y_ecran, 1,50, 50)
et
CloseGadgetList()
mais .. mon WindowedScreen() etait toujour asservi a la fenetre
WindowID(#Window)
en fait il faut l'asservir au Container !!
OpenWindowedScreen(GadgetID(0), 0, 0, 100, 100, #True, 0, 0) ; ATTENTION , ici on assservi le Screen au Container
hum ! il faut ajouter ça dans la Doc !!

Merci Graph100
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 14:20
par graph100
Par contre, ça m'étonnerais grandement que ça fonctionne sur les autre OS ! Il faudrait vérifier, mais à mon avis ça fonctionne à cause de la façon de window pour gérer les gadgets et les fenêtres
@Micoute : merci pour la pitite correction

je n'ai pas installé les bêtas, (je ne le fait pas) donc, ton code ne fonctionne pas pour les gens qui n'ont pas la bêta !
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 15:06
par Micoute
graph100 a écrit :
Par contre, ça m'étonnerais grandement que ça fonctionne sur les autre OS ! Il faudrait vérifier, mais à mon avis ça fonctionne à cause de la façon de window pour gérer les gadgets et les fenêtres
@Micoute : merci pour la pitite correction

je n'ai pas installé les bêtas, (je ne le fait pas) donc, ton code ne fonctionne pas pour les gens qui n'ont pas la bêta !
C'est pour cela que j'ai commenté les arguments !
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 17:26
par Backup
Pour le coup j'ai renoncé a passer en mode Windowed / window
car apres avoir passé une partie de l'aprem a adapter le code
je me suis rendu compte que la gestion de la souris devenais du coup problematique !
les events n'etaient pas renvoyés de façon aussi net (x,y, boutons..)
meme en passant par l'Api ça devenais galere ...
car j'ai besoin de pouvoir dessiner dans le Screen , et/ ou povoir l'afficher en fenetre ou en Plein ecran ....
bref , apres moult Test , je reviens a la methode precedente : windowed dans fenetre , et plein ecran en vrais Screen
Merci quand meme l'Astuce est intéressante ..
je pense que ça devrai marcher sous Linux , car apres tout, il n'y a pas d'appel d'autres fonctions que celles de Purebasic

Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 18:48
par Ar-S
Oui merci pour ce code.
Le canvas correspondrait pas à tes besoins ?
Re: OpenWindowedScreen()
Publié : lun. 31/déc./2012 23:40
par Backup
non, car la fenetre de Pure_anaglyphe peut etre redimensionnée
pour adapter au proportion d'une image ... et le mode Auto-Redimensionnement du WindowedScreen est bien pratique
et en plein ecran , ça pourrai peut etre faire ( bien que je suis pas sur qu'on puisse faire afficher des Sprites
dans un Canvas ??? ! )
mais cela me force a revoir complétement les Event relatif au touches Clavier , et souris .. j'aime pas trop refaire..
bah , j'ai surtout voulu passer en Full Windowed Screen (plein ecran aussi)
pour le calldebugger !!
car en mode plein ecran, on ne peut plus utiliser le Debugger ...
il me semble pourtant me souvenir que dans les anciennes Version (3.8x..3.9x) ont pouvais debugger sous plein ecran...?!
je trouve qu'un Debugger qui fonctionnerai sous OPENSCREEN() serai quand meme pas mal

(ou j'ai encore loupé un truc ... )
pour le moment, je fais des Beep(xx,xx) pour savoir si le code passe par un endroit
et je fait des sorties de contenu de variable en utilisant le Screen ... mais c'est lourd ...
le code ci dessus est deja bien pour faire des sorties en utilisant le Windowed Screen , mais je ne l'utiliserai pas pour mon prg

Re: OpenWindowedScreen()
Publié : mar. 01/janv./2013 15:19
par Patrick88
sur le forum, recherche le code "WindowedScreen + GUI Eventhandling Demo - March 22, 2007",
il permet de faire tourner un openwindowscreen dans une fenêtre pb en séparant/filtrant les évenements du screen et de windows,
code pouvant être pour ogre afin de réaliser un modeleur par exemple.
Pat
Re: OpenWindowedScreen()
Publié : mar. 01/janv./2013 16:30
par Backup
Patrick88 a écrit :sur le forum, recherche le code "WindowedScreen + GUI Eventhandling Demo - March 22, 2007",
il permet de faire tourner un openwindowscreen dans une fenêtre pb en séparant/filtrant les évenements du screen et de windows,
code pouvant être pour ogre afin de réaliser un modeleur par exemple.
Pat
oui je sais deja faire ça

(et depuis longtemps )
Pure_anaglyphe utilise deja depuis le debut un windowed screen + gadget , et un mode plein ecran Screen (par appuis sur la barre d'espace )
je voulais juste avoir la possibilité de Debugger en mode Screen , alors j'ai fais une demande ici , a propos du mode WindowedScreen plein ecran/fenetre
(bref Relis le Topic , je vais pas te Reexpliquer ... )
Merci quand meme pour la Tentative d'info

Re: OpenWindowedScreen()
Publié : mar. 01/janv./2013 16:38
par Patrick88
m'oui, c'est aussi pour ça (pas de debugger en mode screen) que je passe par ce code...
sinon, tu peux utiliser la commande "trace" comme au (bon vieux) temps du gwbasic
et si tu utilises 2 écrans ? 1 pour le screen et 1 pour le code et le debugger ?
pat
Re: OpenWindowedScreen()
Publié : mar. 01/janv./2013 17:29
par Backup
merci

Re: OpenWindowedScreen()
Publié : mar. 15/janv./2013 19:46
par cederavic
Et en utilisant un Canvas comme "WindowedScreen" auquel tu attache une image dans laquelle tu fais ton dessin et que tu redimensionne selon la taille de la fenetre ?
Biensur il faudra rajouter un coef pour les positions de la souris en fonction de la taille originale et actuelle de la fenetre, mais ça doit etre jouable...