=> Renseignements

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message 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 ;)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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 !
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message par Florian »

cool ça marche :P merci !

sinon mon code est bon ?
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message 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 :)
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

SALUT

florian tu veux faire quoi comme programme .
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message par Florian »

Bah rien ... je fais juste des tests... mais si j'arrive pas à affiché un bouton, je vais pas allé loin :/
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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 
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message 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
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message 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
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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.
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message 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
Florian
Messages : 20
Inscription : lun. 07/juin/2004 18:04
Contact :

Message par Florian »

Par contre maintenant ( avec ton code ) la fenêtre ne se ferme plus avec la croix :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

Ben chez moi si ....
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Répondre