une solution, ce n'est pas la seule :
un des évenement renvoyé par WaitWindowEvent() est #PB_Event_Repaint
par ex, avec ton exemple de l'autre question, çà donne çà :
Code : Tout sélectionner
Procedure GF_GameScreen()
;Chargement des médias
;Définitions des constantes
;Fenêtres
Enumeration
#fenetre_gamescreen
EndEnumeration
;Gadgets
Enumeration
;menus
#menu_main
#menu_item_save
#menu_item_backtomenu
#menu_item_quit
;frames
#frame_main
;boutons
#bouton_statistiques
EndEnumeration
;Définitions des variables
;Fichiers inclus
;Déclaration des procédures
;===========================
;INTERFACE
;===========================
;Dessin de l'interface (une grande frame 850*740 à droite, un bouton écran à gauche et une frame information en bas)
If OpenWindow(#fenetre_gamescreen,1,1,1024,768,"Galactic Fantasy",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget)
If CreateMenu(#menu_main,WindowID(#fenetre_gamescreen))
MenuTitle("Fichier")
MenuItem(#menu_item_save,"Sauvegarder la partie")
MenuItem(#menu_item_backtomenu,"Revenir au menu principal")
MenuBar()
MenuItem(#menu_item_quit,"Quitter la partie")
EndIf
If CreateGadgetList(WindowID(#fenetre_gamescreen))
Frame3DGadget(#frame_main,150,15,850,740,"",#PB_Frame3D_Flat)
ButtonGadget(#bouton_statistiques,15,15,40,30,"Statistiques")
EndIf
EndIf
;Mise en place de l'interaction avec l'interface
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton_statistiques
Print("yo")
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #menu_item_quit
Event = #PB_Event_CloseWindow
EndSelect
Case #PB_Event_Repaint
If StartDrawing(WindowOutput(#fenetre_gamescreen))
Box(150,15,850,730,RGB(0,0,0))
For x = 1 To 500
Plot(Random(850) + 150, Random(730) + 15, RGB(200,200,200))
Next
StopDrawing()
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndProcedure
GF_GameScreen()
PS :
là encore ce n'est pas un bug de purebasic.
un programmeur doit d'abord se dire que c'est de sa faute plutot que du langage.
