PureBasic

Forums PureBasic
Nous sommes le Mar 12/Nov/2019 2:32

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 42 messages ]  Aller à la page Précédente  1, 2, 3  Suivante
Auteur Message
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Ven 10/Mai/2019 21:01 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
J'ajouterai après-demain de quoi scroller sans API en évitant d'utiliser les threads.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Dim 12/Mai/2019 17:44 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
Ce système de merde va me rendre fou... J'arrive à quelquechose qui fonctionne. Je vais pour renommer les variables, pour qu'elles aient un nom, une signification, quelquechose de compréhensible, d'analysable, et là je n'arrive pas à isoler toutes les étapes. Pire, à chaque fois que j'isole, j'arrive à tout isoler sauf une.

La réalité, c'est que, au moins pour Windows, c'est de l'orienté objet, et c'est une grosse usine à gaz strictement inutile. C'est du << on vous la fait pour le symbole (dans le sens de l'image de marque) et ce n'est pas grave si ça plante. >>

Donc, pas la peine de pondre quelquechose de pas fini. Mais je me dis que vu le délire avec des redondances de signal strictement inutiles, des absences (pour ne pas dire << manquement >>) de signal, je parie que ceux qui testeront sur Win XP, Windows 7 et Windows 10 ne verront pas le système fonctionner.

Pour exemple, lâcher le bouton de souris c'est trois signaux de souris lâchée : claclaclac. Et c'est le même signal qui envoie un << clac >> quand la souris se déplace uniquement dans la fenêtre.

Autrement dit, leur architecture orientée objet est
pourrie. Bravo Microsoft. Merci Microsoft.

J'ai bien dit leur architecture orientée objet de l'OS, pas l'orienté objet. C'est leur choix d'architecture qui est bugué puisque chaque tâche doit se contraindre à vérifier des babioles dans d'autres tâches.

Donc, je ne lâche pas, j'ai réussi sans API le scroll horizontal contrôlé par la souris mais uniquement en StickyWindows. Le scroll en direct c'est faisable. Par contre, le resizing en direct, c'est-à-dire en voyant tourner l'accélération graphique simultanément, ça, ce sera impossible.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 2:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2103
pourtant pas dur .... :roll: (pas la peine de t'en prendre a Microsoft , lorsqu'on sait pas ... on sait pas ! )


Code:

; Codé par Dobro
;Pb 5.70



;- Window Constants
;
Declare Open_Window_0()
Enumeration
      #Window_0 ; numero de la fenetre
      #sprite ; numero du sprite
      #Button_0 ; numero du bouton
      #Gadget_scroll
      #Container
EndEnumeration

Structure sprite
      num.l ; numero du sprite
      x.l ; la coordonée x du sprites
      Y.l ; la coordonée y du sprites
      sensx.l ; le sens du deplacement x du sprite
      sensy.l  ; le sens du deplacement y du sprite
      coul.l ; la couleur du sprite
EndStructure

nombre_de_Sprite=200
Dim sprite.sprite(nombre_de_Sprite)


For i=1 To nombre_de_Sprite
      
      sprite(i)\x=Random(1920) +32; on donne une coordonée de depart au sprite
      sprite(i)\Y=Random(1080)+32
      de=Random(1)
      If de=1
            sprite(i)\sensx=10 ; on donne un sens de deplacement par defaut au sprite
            sprite(i)\sensy=10 ; ce chiffre correspond a la vitesse de deplacement du sprite
      Else
            sprite(i)\sensx=-10 ; on donne un sens de deplacement par defaut au sprite
            sprite(i)\sensy=10 ; ce chiffre correspond a la vitesse de deplacement du sprite
      EndIf
      sprite(i)\coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50) ; attribut une couleur
Next i
;


InitSprite()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre

; ****** creation des sprites *********
For i=1 To nombre_de_Sprite
      CreateSprite(i,16,16) ; creation d'une cellule vide (un sprite)
      StartDrawing( SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
            Box(1,1,16,16,sprite(i)\coul) ; voila le dessin du carre vert dans notre sprite
      StopDrawing()
Next i
;**************************************
CreateSprite(300,32,32) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(300)) ; on va dessiner dans notre sprite un carre coloré
      circle(1,1,16,rgb(0,255,0)) ; voila le dessin du carre vert dans notre sprite
StopDrawing()


For i=1 To nombre_de_Sprite
      ; **************Affichage du sprite ***********
      DisplaySprite(i,sprite(i)\x,sprite(i)\Y)
Next i
DisplaySprite(300,1920-32,1080-32)
FlipBuffers()




Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
      
      select  WaitWindowEvent(2)
            
            Case  #PB_Event_CloseWindow
            End
            Case  #PB_Event_Gadget
            Select EventGadget()
                  Case #Gadget_scroll                  
                  ;      debug   GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
                  ;      debug   GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
                  Case #Button_0
                  Debug "appuis sur le bouton ok"
                  End
                  EndSelect            
            EndSelect
            ; Resize sans API
            Largeur = WindowWidth(#Window_0, #PB_Window_InnerCoordinate)
            Hauteur = WindowHeight(#Window_0, #PB_Window_InnerCoordinate)
            
            If mem_largeur<>Largeur or mem_Hauteur<>Hauteur
                  ResizeGadget(#Button_0,#Pb_ignore,Hauteur-88,#Pb_ignore,#Pb_ignore)
                  ResizeGadget(#Gadget_scroll,#Pb_ignore,#Pb_ignore,largeur-224,Hauteur-168)
                  
                  
                  mem_largeur=Largeur
                  mem_Hauteur=Hauteur
            Endif
            
            
      Until Event = #PB_Event_CloseWindow ; End of the event loop
      
      End
      ;
      
      
      Procedure Open_Window_0()
            If OpenWindow(#Window_0, 363, 117, 1024, 768, "test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
                  ButtonGadget(#Button_0, 10, 680, 100, 30, "ok")  ; voila le bouton
                  ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat) ; dans un scroll AREA
                  ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double) ; on met un container
                  OpenWindowedScreen(gadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1) ; et on creer un ecran graphique dedans
                  CloseGadgetList()
            EndIf
      EndProcedure
      

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 10:33 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
Ah ben ça... C'est une bonne soufflée. Pas une API pour empêcher de changer d'OS. Je vais regarder ça...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 11:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6857
Localisation: IDF (Yvelines)
Intéressant ton code Zorro ! Bordelique (le ton est juste moqueur hein ?) mais intéressant. Je jette un œil et je commente ..... :mrgreen:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 12:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6857
Localisation: IDF (Yvelines)
S'agissant d'une démonstration, j'ai un peu élagué ton code des choses inutiles et corrigé quelques trucs:
- Ajouter un EnableExplicite
- Supprimer les variables inutilisées
- Fermer un container
- Ajouter un #PB_Event_SizeWindow ^^

Ton nouveau code
Code:
; Codé par Dobro
;Pb 5.70

;- Window Constants
;
EnableExplicit

Declare Open_Window_0()

Enumeration
  #Window_0 ; numero de la fenetre
  #Button_0 ; numero du bouton
  #Gadget_scroll
  #Container
EndEnumeration

Structure sprite
      num.l ; numero du sprite
      x.l ; la coordonée x du sprites
      Y.l ; la coordonée y du sprites
      coul.l ; la couleur du sprite
EndStructure
Global nombre_de_Sprite=200, i, largeur, hauteur
Global Dim sprite.sprite(nombre_de_Sprite)

InitSprite()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre

; ****** creation des sprites *********
For i=1 To nombre_de_Sprite
  With sprite(i)
    \x = Random(1920)
    \y = Random(1080)
    \coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50)
   
    CreateSprite(i, 16, 16) ; creation d'une cellule vide (un sprite)
    StartDrawing(SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
    Box(0, 0, 16, 16, \coul)    ; voila le dessin du carre vert dans notre sprite
    StopDrawing()
    DisplaySprite(i, \x, \y)
  EndWith
Next i

FlipBuffers()

Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
 
  Select  WaitWindowEvent(2)
    Case  #PB_Event_Gadget
      Select EventGadget()
        Case #Gadget_scroll                 
          ;      debug   GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
          ;      debug   GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
        Case #Button_0
          Debug "appuis sur le bouton ok"
          End
      EndSelect
     
    Case #PB_Event_SizeWindow
      ; Resize sans API
      Largeur = WindowWidth(#Window_0, #PB_Window_InnerCoordinate)
      Hauteur = WindowHeight(#Window_0, #PB_Window_InnerCoordinate)
      ResizeGadget(#Button_0,#PB_Ignore,Hauteur-88,#PB_Ignore,#PB_Ignore)
      ResizeGadget(#Gadget_scroll,#PB_Ignore,#PB_Ignore,largeur-224,Hauteur-168)
     
    Case #PB_Event_CloseWindow
      End
     
  EndSelect
ForEver ; End of the event loop

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 363, 117, 1024, 768, "test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
    ButtonGadget(#Button_0, 10, 680, 100, 30, "ok")                                                                            ; voila le bouton
    ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat)                                         ; dans un scroll AREA
    ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double)                                                           ; on met un container
    OpenWindowedScreen(GadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1)                                                        ; et on creer un ecran graphique dedans
    CloseGadgetList() ;Ferme le container
    CloseGadgetList() ;Ferme le scrollGadget
  EndIf
EndProcedure

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 12:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2103
falsam a écrit:
Intéressant ton code Zorro ! Bordelique (le ton est juste moqueur hein ?) mais intéressant. Je jette un œil et je commente ..... :mrgreen:


il est pas bordelique !! 8O

tu as une partie

[initialisation]

[preparation de la structure pour les Sprites (ceux ci etaient animé a l'origine ça peut se refaire... je les aient juste figé]

[ouverture Fenetre par appel d'une procedure se trouvant dans la zone des procedures en fin de code]

[boucle principale (les events ) ]

[**zone des procedure en fin de code]



PS [reedit] ha oui le " Case #PB_Event_SizeWindow" ... bon j'ai pas codé PB depuis plusieurs Années de façon intense ...
et je n'ai jamais été fan du " With endWith " (et j'aime pas fermer les portes --> " CloseGadgetList()" ... :mrgreen: )

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 12:14 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6857
Localisation: IDF (Yvelines)
Bon ok bordélique est peut etre un peu fort. Sorry.

Mais j'ai pas fini de critiquer ton code .... hahaha

Elle est ou la boucle de rendering ? hein ? elle est ou ?

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 12:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2103
pfff , allez , je retourne dans mon Blender :)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 12:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6857
Localisation: IDF (Yvelines)
Zorro a écrit:
pfff , allez , je retourne dans mon Blender :)
Boude pas ton code est trés bien et je ne connaissais pas cette astuce :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 13:40 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
Falsam a écrit:
Boude pas ton code est trés bien et je ne connaissais pas cette astuce
Attends, c'est pas fini...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 18:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2103
bon au final ,

j'ai donc refais ce code , pour avoir des sprites animées :)


j'ai ajouté une gestion d'un offset pour rectifier le decalage entre la Vraie souris de Windows
et la souris Géré par Purebasic dans son cadre graphique !! de plus ce cadre etant dans un scroll Area
le decalage entre les 2 souris , augmente avec le decalage du scroll (enfin pas dans mon code, puisque je corrige ce fait (voir variables Offset_x et Offset_y))


la redimensionnement de la fenetre se passe relativement bien , ainsi que la prise en compte du bouton ...



Code:
;***********************************************
;Titre  :Fenetre_ecran_scroll2
;Auteur  : Dobro
;Date  :13/05/2019
;Heure  :21:29:33
;Version Purebasic :  PureBasic 5.70 LTS (Windows - x64)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune
;***********************************************



;- Window Constants
;

Declare open_window_0()


Enumeration
      #win ; numero de la fenetre
      #sprite ; numero du sprite
      #Button_0 ; numero du bouton
      #Gadget_scroll
      #Container
      #sprite_curseur
      #timer
EndEnumeration

Structure sprite
      num.l ; numero du sprite
      x.l ; la coordonée x du sprites
      Y.l ; la coordonée y du sprites
      sensx.l ; le sens du deplacement x du sprite
      sensy.l  ; le sens du deplacement y du sprite
      coul.l ; la couleur du sprite
EndStructure



Global nombre_de_Sprite=1000
Global Dim sprite.sprite(nombre_de_Sprite)
Global  offset_x , offset_y ; determine la decalage entre pointeur souris et curseur Graphique

For i=20 To nombre_de_Sprite
      
      sprite(i)\x=Random(1920) +32; on donne une coordonée de depart au sprite
      sprite(i)\Y=Random(1080)+32
      de=Random(1)
      If de=1
            sprite(i)\sensx=1 ; on donne un sens de deplacement par defaut au sprite
            sprite(i)\sensy=1 ; ce chiffre correspond a la vitesse de deplacement du sprite
      Else
            sprite(i)\sensx=-1 ; on donne un sens de deplacement par defaut au sprite
            sprite(i)\sensy=1 ; ce chiffre correspond a la vitesse de deplacement du sprite
      EndIf
      sprite(i)\coul = RGB(Random(200)+50,Random(200)+50,Random(200)+50) ; attribut une couleur
Next i
;


InitSprite():initmouse()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre


CreateSprite(#sprite_curseur,16,16)
StartDrawing(SpriteOutput(#sprite_curseur))
      Box(0,0,16,16,$0000FF)
StopDrawing()


; ****** creation des sprites *********
For i=20 To nombre_de_Sprite
      CreateSprite(i,16,16) ; creation d'une cellule vide (un sprite)
      StartDrawing( SpriteOutput(i)) ; on va dessiner dans notre sprite un carre coloré
            Box(1,1,16,16,sprite(i)\coul) ; voila le dessin du carre vert dans notre sprite
      StopDrawing()
Next i
;**************************************
CreateSprite(300,32,32) ; creation d'une cellule vide (un sprite)
StartDrawing( SpriteOutput(300)) ; on va dessiner dans notre sprite un carre coloré
      circle(1,1,16,rgb(0,255,0)) ; voila le dessin du carre vert dans notre sprite
StopDrawing()
;
;

Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
      ExamineMouse()
      
      select  WaitWindowEvent(50)
            ; ************************* Les Gadgets *******************************************************
            Case  #PB_Event_CloseWindow
            End
            Case #PB_Event_SizeWindow
               Largeur = WindowWidth(#win, #PB_Window_InnerCoordinate)
            Hauteur = WindowHeight(#win, #PB_Window_InnerCoordinate)
            ResizeGadget(#Button_0,#Pb_ignore,Hauteur-88,#Pb_ignore,#Pb_ignore)
            ResizeGadget(#Gadget_scroll,#Pb_ignore,#Pb_ignore,largeur-224,Hauteur-168)   
            Case #PB_Event_Timer
            If EventTimer() = #timer
                  ; ******************** Sprite en mouvement **************************
                  For i=20 to  nombre_de_Sprite
                        sprite(i)\x=sprite(i)\x+sprite(i)\sensx
                        sprite(i)\y=sprite(i)\y+sprite(i)\sensy
                        
                        if sprite(i)\x<=0 or  sprite(i)\x>=1920
                              sprite(i)\sensx=-sprite(i)\sensx
                        Endif
                        if sprite(i)\y<=0 or  sprite(i)\y>=1080
                              sprite(i)\sensy=-sprite(i)\sensy
                        Endif
                        DisplaySprite(i,sprite(i)\x,sprite(i)\Y) ; Affiche les Sprites     
                        compteur=compteur+1
                        if compteur=10
                              compteur=1
                              ;WindowEvent(); SI actif, on a le scroll fluide mais plus la reactivité du bouton !
                        Endif
                  Next i
                  
                  ; ce sprite indique la coordonée 1920x1080 pour repere(quart de rond Vert)
                  DisplaySprite(300,1920-32,1080-32)
                  FlipBuffers()
                  ClearScreen(0)
            Endif
               Case  #PB_Event_Gadget
                        
                        Select EventGadget()
                      Case #Button_0
                              Debug "appuis sur le bouton ok"
                              ;End
                        EndSelect           
            
      EndSelect
      
      
      ;- *****************************************************************************************************
      
      
      
      ;- *************************** Gestion de la souris et de son Sprite *********************************************************
      if WindowMouseX(#win)<gadgetWidth(#Gadget_scroll)  and WindowMouseY(#win)<GadgetHeight(#Gadget_scroll) ; on est dans l'ecran ???
            If WindowMouseX(#win)>GadgetX(#Gadget_scroll) and  WindowMouseY(#win)>GadgetY(#Gadget_scroll) ; on est dans l'ecran !
                  
                  
                  ; showcursor_(0) ; Dans l'ecran on affiche le Sprite et efface le curseur souris Windows (api window)
                  
                  StartDrawing(WindowOutput(#win))
                        FrontColor(RGB(255,255,255))
                        DrawingMode(1)
                        DrawText(80,80,"Position de la souris = " + Str(WindowMouseX(#win)) + " / " + Str(WindowMouseY(#win)))
                  StopDrawing()
                  offset_x =GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_X)
                  offset_Y=GetGadgetAttribute(#Gadget_scroll, #PB_ScrollArea_Y)
                  
                  DisplaySprite(#sprite_curseur,WindowMouseX(#win)-70+offset_x ,WindowMouseY(#win)-70+offset_y) ;  oui , alors on affiche le Sprite
                  
                  
            Else ; non ! , donc on a quitté l'ecran (enfin.. on n'est plus dessus , car en mode fenetré on ne quitte jamais vraiment l'ecran.. puisqu'il est enfant d'une fenetre !!
                  ; contrairement au mode Full Screen()
                  
                  ;showcursor_(1) ; hors de l'ecran on affice le curseur Souris window  mais pas le sprite  (api window)
            Endif
      EndIf
      ;-  ***********************************************************************************************************************
Until Event = #PB_Event_CloseWindow ; End of the event loop


End
;

;- ******************** Zone des Procedures ********************************
Procedure Open_Window_0()
      If OpenWindow(#win, 363, 117, 1024, 768, "test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
            ButtonGadget(#Button_0, 10, 680, 100, 30, "ok")  ; voila le bouton
            AddWindowTimer(#win, #timer, 30)
            ScrollAreaGadget(#Gadget_scroll, 50, 50, 800, 600,1920,1080,1,#PB_ScrollArea_Flat) ; dans un scroll AREA
            ContainerGadget(#Container,10,10,1920,1080,#PB_Container_Double) ; on met un container
            OpenWindowedScreen(gadgetID(#Container), 1, 1, 1920, 1080, 0, 1, 1) ; et on creer un ecran graphique dedans
            CloseGadgetList()
            CloseGadgetList()
      
      EndIf
EndProcedure



; Epb



_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Dernière édition par Zorro le Lun 13/Mai/2019 23:14, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Lun 13/Mai/2019 20:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2103
bon finalement, j'etais pas trop content du resultat

j'ai revu le code a nouveau , le truc c'est que lorsqu'on utilise des Sprites Animé
il faut les mettres dans un Timer !!

du coup on resoud tout !! la fluidité des Scrolls Bar , et la fluidité des animations

bref, le code ci dessus fait tout ! :) ET SANS API NI CALLBACK

a++++

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Mar 14/Mai/2019 20:04 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
Zorro a écrit:
if WindowMouseX(#win)<gadgetWidth(#Gadget_scroll) and WindowMouseY(#win)<GadgetHeight(#Gadget_scroll) ; on est dans l'ecran ???
If WindowMouseX(#win)>GadgetX(#Gadget_scroll) and WindowMouseY(#win)>GadgetY(#Gadget_scroll) ; on est dans l'ecran !
;

Il y a deux trucs qui me froissent là-dedans :
1) le WindowMouse X ou Y peut changer d'une ligne de code source à l'autre. Niveau de la remarque : tâtillon.
2) Dans la 1ère ligne c'est << If WinMouseX < GadgetX + GadgetWidth >>. Niveau remarque : pertinent.

Si ton gadget colle la gauche (ou le haut c'est même topo) de la fenêtre, ça va, sinon, ça décale. Mais je me demande si tu n'as pas écrit ton 1er code source les yeux bandés.

Pour éviter les bandes latérales blanches lors des scrolls, peut-être que SmartRefreshWindows() peut faire quelquechose.

Moi, j'ai une autre méthode qui risque de plaire à falsam si ce n'est pas un cachotier ! Et ta méthode est complètement différente : si tu arrives à faire fonctionner le timer au moins pour le scroll (le resizing, faut pas rêver), c'est déjà une super solution.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Ouvrir un screen plus grand que la fenetre
MessagePosté: Jeu 16/Mai/2019 21:14 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3521
Il est parti falsam ? Il y a un truc... T'inquiête falsam, ça va partir. C'est juste un 'z' sur le front. Reviens. Car c'est pas fini. C'est mon tour. J'attends juste une petite phrase d'intro de ta part...


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 42 messages ]  Aller à la page Précédente  1, 2, 3  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye