Page 2 sur 2

Publié : sam. 12/juin/2004 18:25
par Florian
Florian a écrit :D'accord, merci comtois :)

j'ai justement un problème :)
je fais des tests depuis tout à l'heure et j'ai un problème ! j'ai créé ma fenêtre mais lors de la compilation et de l'execution elle ne s'ouvre pas , voici mon code :

Code : Tout sélectionner

; + Initialisation

InitKeyboard()
InitMouse()
InitSprite()
InitSound()

; + Decodeur(s)

UsePNGImageDecoder()

; + Definition des variables

#ScreenWidth = 550 
#ScreenHeight = 400
#ScreenX = 100
#ScreenY = 200
#NumWindow = 0
#Button_0 = 0

If InitSound() = 0
    MessageRequester ("Erreur","Aucune Carte Son détectée !");
  End
EndIf

Procedure Open_Window_0()
  If InitSprite() = 0 Or InitMouse() = 0 Or InitKeyboard() = 0
      MessageRequester ("Erreur","Impossible d'ouvrir DirectX !", 0);
    End
  ElseIf OpenWindow( #NumWindow, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Premier Test" ) = 0 
      MessageRequester( "Erreur" , "Impossible d'ouvrir la fenêtre, 0 )     
    End 
  EndIf 
EndProcedure 

Si vous pouvez me dire en même temps si je peux amélioré des trucs dans mon début de code ou si j'ai fé des truc ki faut pas ;)

Publié : sam. 12/juin/2004 18:43
par fweil
Ajoutes :

Code : Tout sélectionner

Open_Window_0() 
Repeat

Until WaitWindowEvent() = #PB_Event_CloseWindow
à la fin de ton code pour appeler la procédure Open_Window_0() qui ouvre la fenêtre, et ensuite avoir le temps de la fermer avant qu'elle ne disparaisse !

Publié : sam. 12/juin/2004 18:44
par Florian
cool ça marche :P merci !

sinon mon code est bon ?

Publié : sam. 12/juin/2004 19:12
par Florian

Code : Tout sélectionner

; + Initialisation

InitKeyboard()
InitMouse()
InitSprite()
InitSound()

; + Decodeur(s)

UsePNGImageDecoder()

; + Definition des variables

#ScreenWidth = 550 
#ScreenHeight = 400
#ScreenX = 100
#ScreenY = 200
#NumWindow = 0
#Button_0 = 0

If InitSound() = 0
   MessageRequester ("Erreur","Aucune Carte Son détectée !");
 End
EndIf

Procedure Open_Window_0()
  If InitSprite() = 0 Or InitMouse() = 0 Or InitKeyboard() = 0
      MessageRequester ("Erreur","Impossible d'ouvrir DirectX !", 0);
    End
  ElseIf OpenWindow(#NumWindow, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Test 1")= 0
      MessageRequester("Erreur" , "Impossible d'ouvrir la fenêtre, 0)
        If CreateGadgetList(WindowID(#NumWindow)) ;
            ButtonGadget(0,10,15,230,30,"Test button")
          End
        EndIf 
    End
  EndIf
EndProcedure 

Open_Window_0()
Repeat 

Until WaitWindowEvent() = #PB_Event_CloseWindow 

Maintenant, je créé un boutton, je n'ai aucune erreur lors de la compilation mais c'est pareil, il ne s'affiche pas ( la fenêtre elle est ouverte )

je suis vraiment désolé, mais ça fé 2H que je fais du PureBasic :)

Publié : sam. 12/juin/2004 19:25
par garzul
SALUT

florian tu veux faire quoi comme programme .

Publié : sam. 12/juin/2004 19:33
par Florian
Bah rien ... je fais juste des tests... mais si j'arrive pas à affiché un bouton, je vais pas allé loin :/

Publié : sam. 12/juin/2004 19:34
par fweil
Florian,

Problème de logique :

Code : Tout sélectionner

; + Initialisation 

InitKeyboard() 
InitMouse() 
InitSprite() 
InitSound() 

; + Decodeur(s) 

UsePNGImageDecoder() 

; + Definition des variables 

#ScreenWidth = 550 
#ScreenHeight = 400 
#ScreenX = 100 
#ScreenY = 200 
#NumWindow = 0 
#Button_0 = 0 

If InitSound() = 0 
   MessageRequester ("Erreur","Aucune Carte Son détectée !"); 
 End 
EndIf 

Procedure Open_Window_0()
  If InitSprite() And InitMouse() And InitKeyboard()
      If OpenWindow(#NumWindow, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Test 1")
          If CreateGadgetList(WindowID(#NumWindow)) ; 
              ButtonGadget(0,10,15,230,30,"Test button") 
          EndIf 
        Else
          MessageRequester("Erreur" , "Impossible d'ouvrir la fenêtre", 0) 
      EndIf
    Else
      MessageRequester ("Erreur","Impossible d'ouvrir DirectX !", 0); 
  EndIf 
EndProcedure 

Open_Window_0() 
Repeat 

Until WaitWindowEvent() = #PB_Event_CloseWindow 

Publié : sam. 12/juin/2004 20:24
par Florian
Ah oui tout de suite c'est mieux :))

fweil esque tu peux m'expliquer les erreurs que j'avais faites ? enfin les détaillés en m'expliquant pourquoi sa fonctionné pas ? enfin si tu as le temps !

merci


florian

Publié : sam. 12/juin/2004 20:56
par fweil
Florian,

En fait les erreurs de logique viennent, dans ton post précédent, de l'imbrication des lignes If / EndIF qui ne conteaient pas le bon code pour arriver à une fenêtre ouverte avec le gadget.

Si tu regardes ton code Open_Window_0() :

Procedure Open_Window_0()
If InitSprite() = 0 Or InitMouse() = 0 Or InitKeyboard() = 0
MessageRequester ("Erreur","Impossible d'ouvrir DirectX !", 0);
End
ElseIf OpenWindow(#NumWindow, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Test 1")= 0
MessageRequester("Erreur" , "Impossible d'ouvrir la fenêtre, 0)
If CreateGadgetList(WindowID(#NumWindow)) ;
ButtonGadget(0,10,15,230,30,"Test button")
End
EndIf
End
EndIf
EndProcedure

ElseIf OpenWindow(#NumWindow, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Test 1")= 0

signifie que si la fenêtre n'est pas créée ... alors tu envoies un requester et ensuite tu créés la liste de gadgets !

Pas possible, parce que si tu créés les gadgets quand la fenêtre n'a pas pu être créée ... ben ça la fait pas.


En fait moi je n'utilise pas trop l'éditeur visuel, par habitude, parce que je trouve que le code induit n'est pas trop clair.

Je préfère un style d'écriture plus intuitif à mon sens.

Voilà comment j'écrirai, mais ce n'est que mon approche personnelle, le code que tu as posté :

Code : Tout sélectionner

; + Decodeur(s) 

UsePNGImageDecoder() 

; + Definition des variables 

#ScreenWidth = 550 
#ScreenHeight = 400 
#ScreenX = 100 
#ScreenY = 200 
Enumeration
  #Window_Main
  #Gadget_Button
EndEnumeration

  If InitSprite() And InitMouse() And InitKeyboard() And InitSound()
      If OpenWindow(#Window_Main, #ScreenX, #ScreenY, #ScreenWidth, #ScreenHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget , "Test 1") 
          AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape) ; Ca c'est un raccourci pour fermer la fenêtre quand on appuie sur Escape
          If CreateGadgetList(WindowID(#Window_Main)) ; 
              ButtonGadget(#Gadget_Button,10,15,230,30,"Test button") 
          EndIf 
          Quit = #FALSE ; La variable Quit permet de garder la fenêtre ouverte jusqu'à ce que Quit = #TRUE
          Repeat 
            Select WaitWindowEvent()
              Case #PB_Event_CloseWindow
                Quit = #TRUE
              Case #PB_Event_Menu
                Select EventMenuID()
                  Case #PB_Shortcut_Escape
                    Quit = #TRUE
                EndSelect
              Case #PB_Event_Gadget
                Select EventGadgetID()
                  Case #Gadget_Button
                    Debug "Bouton cliqué"
                EndSelect
            EndSelect
          Until Quit
        Else 
          MessageRequester("Erreur" , "Impossible d'ouvrir la fenêtre", 0) 
      EndIf 
    Else 
      MessageRequester ("Erreur","Impossible d'ouvrir DirectX !", 0); 
  EndIf 
End

Publié : sam. 12/juin/2004 21:42
par Florian
D'accord merci, je comprends mieux maintenant :) mais je ne comprends pas pourquoi tu me dis que j'ai utilisé l'editeur visuel, alors que je ne l'ai pas utilisé :P


flo

Publié : sam. 12/juin/2004 21:53
par fweil
Ah j'ai pensé que tu avais utilisé l'éditeur visuel à cause de la procédure Open_Window_0() qui est habituellement le résultat de celui-ci.

Mais peu importe ...

Après c'est juste question d'usage et d'habitude.

Publié : sam. 12/juin/2004 21:54
par Florian
Non, non, si l'editeur visuel donne ce même nom à la procédure c'est un simple hasard .... déjà que c'est un langage basic, alors faire ses boutons à la main c'est la moindre des choses ;)

florian

Publié : sam. 12/juin/2004 22:03
par Florian
Par contre maintenant ( avec ton code ) la fenêtre ne se ferme plus avec la croix :)

Publié : dim. 13/juin/2004 7:46
par fweil
Ben chez moi si ....