Thread, WindowsTimer et Multi-fenêtres : je ne comprend pas
Publié : lun. 19/déc./2011 16:03
Le code suivant doit être compilé en mode Thread. Pour autant, il ne fait pas ce que je veux du tout !
Il devrait toutes les 5 secondes afficher une sous-fenêtre avec un comptage jusqu'à 10.
1) toutes les 5 secondes il devrait lancer le thread (grâce à AddWindowTimer) : rien
2) si je lance "manuellement" (clique barre menu) le thread, il n'affiche pas de valeur dans la "sous-fenêtre" : pourquoi ?
Il devrait toutes les 5 secondes afficher une sous-fenêtre avec un comptage jusqu'à 10.
1) toutes les 5 secondes il devrait lancer le thread (grâce à AddWindowTimer) : rien
2) si je lance "manuellement" (clique barre menu) le thread, il n'affiche pas de valeur dans la "sous-fenêtre" : pourquoi ?
Code : Tout sélectionner
Enumeration
#Obj_Window0
#Obj_Window1
#Obj_String0
#Obj_String1
EndEnumeration
Global d
Procedure Counter(*Valeur)
If OpenWindow(#Obj_Window1,150, 55,100,25,"Thread",#PB_Window_Tool,WindowID(#Obj_Window0))
StringGadget(#Obj_String1,2,2,96,21,"Cnt")
Delay(100)
For t = 1 To 10
SetGadgetText(#Obj_String1,Str(t)+"/100")
Debug t
Delay (200) ; 10*200 = 2000mS = 2s
Next t
d = Date()
EndIf
EndProcedure
If OpenWindow(#Obj_Window0,150,10,200,25,"Main")
StringGadget(#Obj_String0,2,2,196,21,"Hello")
AddWindowTimer(#Obj_Window0, 100, 5*1000) ; 5 secondes
d = Date()
;
Repeat
EventID = WaitWindowEvent(20)
If EventID <> 15
Debug EventID
EndIf
If EventID = 674
CreateThread(@Counter(),1)
EndIf
SetGadgetText(#Obj_String0,FormatDate("%hh:%ii:%ss",Date()-d))
If EventID = #PB_Event_Timer
Debug "Timer"
CreateThread(@Counter(),1)
EndIf
Until EventID = #PB_Event_CloseWindow
CloseWindow(#Obj_Window0)
EndIf