Fenetre modale : bug !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Doctor-B
Messages : 26
Inscription : lun. 27/août/2007 20:01

Fenetre modale : bug !

Message par Doctor-B »

Yo !
J'ai décidé de créer un programme(pour une fois)utile.
Vous n'en conaitrez pas la raison.
Voici le script :

Code : Tout sélectionner


; Codé par Dobro(et DoctorB,non mais !)
; en purebasic 4.02



;- Window Constants
;
Declare Open_Window_0()
Enumeration
     #Window_0 ; numero de la fenetre
     #sprite ; numero du sprite
     #Button_0 ; numero du bouton
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=15
Dim sprite.sprite(nombre_de_Sprite)


For i=1 To nombre_de_Sprite
    sprite(i)\x= Random (200) +32 ; on donne une coordonée de depart au sprite
    sprite(i)\Y= Random (200)+32
    de= Random (1)
     If de=1
        sprite(i)\sensx=4 ; on donne un sens de deplacement par defaut au sprite
        sprite(i)\sensy=4 ; ce chiffre correspond a la vitesse de deplacement du sprite
     Else
        sprite(i)\sensx=-4 ; on donne un sens de deplacement par defaut au sprite
        sprite(i)\sensy=4 ; 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
;**************************************


Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
    
    Event = WindowEvent () ; attends de recevoir un evenements de la fenetre
     Delay (1)
     WindowID = EventWindow () ; The Window where the event is generated, can be used in the gadget procedures
    
     GadgetID = EventGadget () ; Is it a gadget event?
    
     EventType = EventType () ; The event type
    
     ;You can place code here, and use the result as parameters for the procedures
    
     If Event = #PB_Event_Gadget
         If GadgetID = #Button_0
             Debug "appuis sur le bouton ok"
             End
         EndIf
     EndIf
    
     For i=1 To nombre_de_Sprite
        sprite(i)\x= sprite(i)\x+sprite(i)\sensx ; on lance le sprite
        sprite(i)\Y=sprite(i)\Y+sprite(i)\sensy
        
         ; on va tester les sortie de l'ecran pour creer des rebonds
        
         ; les verticales
         If sprite(i)\Y<0 ; sort par le haut !!
            sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical
         EndIf
         If sprite(i)\Y>350-16 ; sort par le bas !!
            sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical
         EndIf
        
         ; les horizontales
         If sprite(i)\x<0 ; sort par la gauche
            sprite(i)\sensx=-sprite(1)\sensx ;on inverse le deplacement horizontal
         EndIf
         If sprite(i)\x>400-16 ; sort par la droite
            sprite(i)\sensx=-sprite(i)\sensx ;on inverse le deplacement horizontal
         EndIf
         ; ********** fin des test de sorti d'ecran *****************
        
         ; **************Affichage du sprite ***********
         DisplaySprite (i,sprite(i)\x,sprite(i)\Y)
     Next i
    
    
    
     FlipBuffers ()
     ClearScreen ( RGB (0,0,0)) ; on nettoie l'ecran pour le prochain affichage
    
     ; *****************************************
    
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;


Procedure Open_Window_0()
#Window_0= 0
     If OpenWindow ( #Window_0 , 363, 117, 472, 423, "[--Alpha--]::[By DoctorB]" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
             SetWindowColor(#Window_0, 000000)    
         If CreateMenu(0, WindowID(0))  ; la création du menu commence ici....
      MenuTitle("--AlphaMenu--")
        MenuItem(1, "OoO")
        MenuItem(2, "AaA")
      MenuTitle("--?--")
        MenuItem(3, "A propos")
    EndIf
             OpenWindowedScreen ( WindowID ( #Window_0 ), 35, 10, 472, 410, 0, 1, 1) ; on creer un ecran graphique dedans
         If CreateGadgetList ( WindowID ( #Window_0 )) ; la liste gadget pour la gestion des gadgets (ici un bouton)

         EndIf
     EndIf
EndProcedure 
Vous l'avez donc vu je me suis inspiré du plus génialissime des codes que Dobro ai pu faire ^^
Simplement je souhaite que quand on clique sur un item ca ouvre un web gadget(allez,google !).
Mais le problème c'est que ayant fais ca la fenetre spritée se ferme,et en
suivant le tuto de Jacob ca me fais des erreurs partout :(...
Voila ce que je souhaiterai :

Une fenêtre de chargement...
Elle se ferme a la fin du chargement et ca ouvre ma belle fenêtre(enfin celle de Dobro xD)et quand on clique sur les items menu ca ouvre des web gadgets DANS UNE NOUVELLE FENETRE !

Eclairez moi j'ai usé de tous les moyens(sauf écouter Tokio Hotel quand je code)alors svp eclairez moi !!

Et puis si vous arrivez pas : ca veut dire que moi non plus j'y arriverai pas donc je laisserai tomber :wink:

A plus !
Anonyme

Message par Anonyme »

salut doctorA :

Code : Tout sélectionner

Enumeration
#WIN_MAIN
#LIST
EndEnumeration

If OpenWindow(#WIN_MAIN,0,0,256,256,"Fenetre principale")
  CreateGadgetList(WindowID(#WIN_MAIN))
  ListViewGadget(#LIST,0,0,256,256)
EndIf 



AddGadgetItem(#LIST,-1,"www.google.com")
AddGadgetItem(#LIST,-1,"www.purebasic.com")


Declare OpenNewWindow(URL$)

Repeat
  
  event = WindowEvent()
  

  If event = #PB_Event_Gadget
    
          GadgetID = EventGadget()

          Element = GetGadgetState(#LIST)
           
          If GadgetID = #LIST
            URL$ = GetGadgetItemText(#LIST, Element, #Null)
            OpenNewWindow(URL$)
          EndIf

    
  EndIf
  
  
  
Until event = #PB_Event_CloseWindow
End 




Procedure OpenNewWindow(URL$)
  Static id.l
  id + 1
  If OpenWindow(id,0+(10*id),0+(10*id),640,480,URL$)
    CreateGadgetList(WindowID(id))
    WebGadget(#PB_Any,0,0,640,480,URL$)
  EndIf
EndProcedure
@++
Doctor-B
Messages : 26
Inscription : lun. 27/août/2007 20:01

Message par Doctor-B »

Non moi c'est DoctorB ^^
On arrive pas a nous reconaitre avec ces pseudos :? :lol:

Merci pour ton impressionante rapiditée :wink:
Doctor-B
Messages : 26
Inscription : lun. 27/août/2007 20:01

Message par Doctor-B »

J'ai vu une autre facon d'aborder ton code ésperons que ca va marcher :wink:

Merci 1000x :!:
Anonyme

Message par Anonyme »

arf, j'vous ai pris pour la même personne, car tu appelles aussi le code du script... :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Fenetre modale : bug !

Message par Chris »

Doctor-B a écrit :Vous l'avez donc vu je me suis inspiré du plus génialissime des codes que Dobro ai pu faire ^^
Ah ben c'est sympa pour Dobro, ça!!! :lol:
Doctor-B
Messages : 26
Inscription : lun. 27/août/2007 20:01

Message par Doctor-B »

arf ca marche pas j'arruve pas a tranformer ces url en menu items

pas grave :wink:
Doctor-B
Messages : 26
Inscription : lun. 27/août/2007 20:01

Message par Doctor-B »

Chris=>Ben quoi?Il est génial son code,non :?:
DoctorA
Messages : 19
Inscription : lun. 27/août/2007 20:59

Message par DoctorA »

Moi je trouve que oui ^^
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

Bonjour et bienvenue aux petits nouveaux. 8) 8)

En rajoutant le code Cpl.Bator dans l'évènement #PB_Event_Menu, chez moi celà fonctionne.

Code : Tout sélectionner

; Codé par Dobro(et DoctorB,non mais !) 
; en purebasic 4.02 

;- Window Constants 
; 
Declare Open_Window_0() 

Declare OpenNewWindow(URL$)

Enumeration 
     #Window_0 ; numero de la fenetre 
     #sprite ; numero du sprite 
     #Button_0 ; numero du bouton 
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=15 
Dim sprite.sprite(nombre_de_Sprite) 


For i=1 To nombre_de_Sprite 
    sprite(i)\x= Random (200) +32 ; on donne une coordonée de depart au sprite 
    sprite(i)\Y= Random (200)+32 
    de= Random (1) 
     If de=1 
        sprite(i)\sensx=4 ; on donne un sens de deplacement par defaut au sprite 
        sprite(i)\sensy=4 ; ce chiffre correspond a la vitesse de deplacement du sprite 
     Else 
        sprite(i)\sensx=-4 ; on donne un sens de deplacement par defaut au sprite 
        sprite(i)\sensy=4 ; 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 
;************************************** 


Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre 
    
    Event = WindowEvent () ; attends de recevoir un evenements de la fenetre 
     Delay (1) 
     WindowID = EventWindow () ; The Window where the event is generated, can be used in the gadget procedures 
    
     GadgetID = EventGadget () ; Is it a gadget event? 
    
     EventType = EventType () ; The event type 
    
     ;You can place code here, and use the result as parameters for the procedures 
    
     If Event = #PB_Event_Gadget 
         If GadgetID = #Button_0 
             Debug "appuis sur le bouton ok" 
             End 
         EndIf 
         
     ElseIf Event = #PB_Event_Menu
      
       ;MessageRequester("Pour voir", Str(EventMenu())+" "+GetMenuItemText(0,EventMenu()))
       
       Select EventMenu()
         Case 1,2
           
          URL$ = GetMenuItemText(0,EventMenu())
       
         OpenNewWindow(URL$) 
       
      EndSelect
                  
     EndIf 
    
     For i=1 To nombre_de_Sprite 
        sprite(i)\x= sprite(i)\x+sprite(i)\sensx ; on lance le sprite 
        sprite(i)\Y=sprite(i)\Y+sprite(i)\sensy 
        
         ; on va tester les sortie de l'ecran pour creer des rebonds 
        
         ; les verticales 
         If sprite(i)\Y<0 ; sort par le haut !! 
            sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical 
         EndIf 
         If sprite(i)\Y>350-16 ; sort par le bas !! 
            sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical 
         EndIf 
        
         ; les horizontales 
         If sprite(i)\x<0 ; sort par la gauche 
            sprite(i)\sensx=-sprite(1)\sensx ;on inverse le deplacement horizontal 
         EndIf 
         If sprite(i)\x>400-16 ; sort par la droite 
            sprite(i)\sensx=-sprite(i)\sensx ;on inverse le deplacement horizontal 
         EndIf 
         ; ********** fin des test de sorti d'ecran ***************** 
        
         ; **************Affichage du sprite *********** 
         DisplaySprite (i,sprite(i)\x,sprite(i)\Y) 
     Next i 
    
    
    
     FlipBuffers () 
     ClearScreen ( RGB (0,0,0)) ; on nettoie l'ecran pour le prochain affichage 
    
     ; ***************************************** 
    
Until Event = #PB_Event_CloseWindow ; End of the event loop 

End 
; 


Procedure Open_Window_0() 
#Window_0= 0 
     If OpenWindow ( #Window_0 , 363, 117, 472, 423, "[--Alpha--]::[By DoctorB]" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre 
             SetWindowColor(#Window_0, 000000)    
         If CreateMenu(0, WindowID(0))  ; la création du menu commence ici.... 
      MenuTitle("--AlphaMenu--") 
        MenuItem(1, "www.google.fr") 
        MenuItem(2, "http://www.purebasic.fr/french/") 
      MenuTitle("--?--") 
        MenuItem(3, "A propos") 
    EndIf 
             OpenWindowedScreen ( WindowID ( #Window_0 ), 35, 10, 472, 410, 0, 1, 1) ; on creer un ecran graphique dedans 
         If CreateGadgetList ( WindowID ( #Window_0 )) ; la liste gadget pour la gestion des gadgets (ici un bouton) 

         EndIf 
     EndIf 
EndProcedure 

Procedure OpenNewWindow(URL$) 
  Static id.l 
  id + 1 
  If OpenWindow(id,0+(10*id),0+(10*id),640,480,URL$) 
    CreateGadgetList(WindowID(id)) 
    WebGadget(#PB_Any,0,0,640,480,URL$) 
  EndIf 
  
EndProcedure
@ peluche
Répondre