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 :
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 pasCode : 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
=> Renseignements
Ajoutes :
à 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 !
Code : Tout sélectionner
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.
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
je suis vraiment désolé, mais ça fé 2H que je fais du PureBasic

Florian,
Problème de logique :
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,
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é :
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.
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.
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.