J'en ajoute une couche

-Un exemple avec un seul paramètre.
-Un exemple avec deux paramètres à travers l’utilisation d'une structure.
Exemple classique d'un thread avec un seul paramétre.
Code : Tout sélectionner
Enumeration
#Mainform
#Buffer
EndEnumeration
Define.l Event
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure MyThread(Value)
Protected N.i
While N<>100000
N+1
SetGadgetText(#Buffer, Str(N))
Wend
EndProcedure
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
StringGadget(#Buffer, 20, 20, 100, 20, "")
EndProcedure
;Ouverture de la fenetre
Open_MainForm()
;Lancement du thread
CreateThread(@MyThread(), 0)
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Si tu souhaites passer plusieurs paramètres tu peux utiliser une structure. Je vais reprendre l'exemple précédent en indiquant au thread que le début de la boucle commence à 1000 pour se terminer à 15000.
Code : Tout sélectionner
Enumeration
#Mainform
#Buffer
EndEnumeration
Define.l Event
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Structure Condition
Minimum.i
Maximum.i
EndStructure
Procedure MyThread(*Value.Condition)
Protected N.i
N=*Value\Minimum
While N<>*value\Maximum
N+1
SetGadgetText(#Buffer, Str(N))
Wend
ClearStructure(*Value, Condition)
EndProcedure
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
StringGadget(#Buffer, 20, 20, 100, 20, "")
EndProcedure
;Ouverture de la fenetre
Open_MainForm()
;Lancement du thread
Parameter.Condition
Parameter\Minimum = 1000
Parameter\Maximum = 15000
CreateThread(@MyThread(), Parameter)
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
ForEver