Page 1 sur 1

Boucle evenement + evenement automatique

Publié : jeu. 26/janv./2006 13:57
par Thyphoon
Je voudrais savoir si c'est bien comme ça qu'il faut faire.
Mon programme doit verifier des infos tout les x temps ! Mais je ne peux pas utiliser les threads car j'ai plein de variable a utilisé lors de cette verification.
Voilà ce que j'ai programmé !

Code : Tout sélectionner

Repeat
If ElapsedMilliseconds()>time
  ClearGadgetItemList(#Tableau)
  Check(numero.s)
  time=ElapsedMilliseconds()+50000
EndIf
Delay(10)
  EventID.l = WindowEvent()
  Select EventID
    Case #PB_Event_Menu ; Un élément du menu a été sélectionné
      Select EventMenuID()
        Case 1
             choix1();
        Case 2
             choix2();

      EndSelect
  EndSelect
Until EventID = #PB_EventCloseWindow

Publié : jeu. 26/janv./2006 14:03
par Dr. Dri
fais une recherche sur les timer
(SetTimer_)

Dri ;)

Publié : jeu. 26/janv./2006 14:10
par Thyphoon
Dr. Dri a écrit :fais une recherche sur les timer
(SetTimer_)

Dri ;)
merci beaucoup j'ai trouvé ça !

Code : Tout sélectionner

Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l) 
     Select uMsg 
         Case #WM_TIMER 
             Select idEvent 
                 Case 1 
                     Debug "--------------------1 seconde" 
                     ; Ici, le code à executer toutes les secondes 
                 Case 2 
                     Debug "0.2 secondes" 
                     ; Ici, le code à executer toutes les 200 millisecondes 
                 Case 3 
                     Debug "-------------------------------------------3 secondes" 
                     ; Ici, le code à executer toutes les 3 secondes 
             EndSelect 
     EndSelect 
EndProcedure 


If OpenWindow (0, 100, 100, 100, 100, #PB_Window_SystemMenu , "" ) 
    Handle = WindowID (0) 
     
     SetTimer_ (Handle, 1, 1000, @TimerProc()) ; envoie un evenement toutes les 1000 millisecondes 
     SetTimer_ (Handle, 2, 200, @TimerProc()) ; envoie un evenement toutes les 200 millisecondes 
     SetTimer_ (Handle, 3, 3000, @TimerProc()) ; envoie un evenement toutes les 3000 millisecondes 
     
     Repeat 
     Until WaitWindowEvent () = #PB_Event_CloseWindow 
EndIf 
Question est ce que je peux passer ce que je veux comme variable dans la procedure TimerProc ou bien c'est comme pour les Threads ?

Publié : jeu. 26/janv./2006 14:12
par Dr. Dri
T'es pas obligé de passer par une procédure callback... tu peux recevoir l'évennement #WM_TIMER

Dri ;)

Publié : jeu. 26/janv./2006 14:14
par Thyphoon
Dr. Dri a écrit :T'es pas obligé de passer par une procédure callback... tu peux recevoir l'évennement #WM_TIMER

Dri ;)
Je crois que j'ai compris merci beaucoup ! je vais faire des tests !
Et question idiote si on veut arrêter un timer on fait comment ?

Publié : jeu. 26/janv./2006 14:17
par Dr. Dri
KillTimer_()

Dri ;)

Publié : jeu. 26/janv./2006 14:19
par Thyphoon
Ok je suis trop nul merci !! c'est genial....en plus j'ai l'impression que ça marche ...
:lol:

Publié : jeu. 26/janv./2006 14:22
par Dr. Dri
Thyphoon a écrit :Ok je suis trop nul merci !! c'est genial....en plus j'ai l'impression que ça marche ...
:lol:
Je décline toute responsabilité en cas de non fonctionnement

Dri :P :lol:

Publié : jeu. 26/janv./2006 14:28
par Thyphoon
Merci beaucoup .... :o) c'est le pied !!! :D
Si ça interesse quelqu'un je fais un programme qui permet de suivre son colispost ! Il me reste juste a faire l'interface, et un système de configuration, mais la routine pour aller interroger le site de la poste fonctionne. :D
Comme ça je peux aller gueuler a la poste lorsqu'un colissimo suivi est marqué arrivé dans votre boite aux lettres et que c'est pas le cas... :P