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