Tutorial d'initiation A la programmation avec l'API Windows
Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
Chapitre 3Les fenêtres9. Les timers
Cours théorique :
Parfois, il peut être utile d'exécuter des tâches à intervalles fixes. Il existe de nombreux moyens d'effectuer cela, mais une des méthodes les plus simples est d'utiliser les 'timers' fournis par l'API Windows. Les 'timers' ne conviennent qu'à des résolutions de temps faibles, en général pas plus de 10 Hz. Un message est envoyé à intervalles réguliers à une fenêtre spécifiée. L'utilisation des timers pour des fréquences trop importantes peut nuire aux performances générales du système du fait des nombreux messages à envoyer. De plus, le temps de traitement des messages fait qu'il est impossible d'obtenir des intervalles réguliers inférieurs à 50ms. Les timers ne constituent donc qu'une méthode simple pour synchroniser un programme dans des conditions assez restreintes. Cependant, ils conviennent pour la plupart des applications bureautiques.
Les timers sont généralement utilisés avec des fenêtres, cependant, ils peuvent être utilisés sans fenêtres. Dans ce cas, le message sera envoyé au thread qui a demandé la création du timer. La fonction GetMessage() doit donc être appelée avec un argument hWnd égal à NULL de manière à na pas associer la réception des messages à une fenêtre spécifique.
Pour créer un timer, on utilise la fonction SetTimer() en précisant l'intervalle de temps désiré. Un message WM_TIMER sera envoyé à la fenêtre à chaque intervalle de temps. Pour stopper un timer, on utilise la fonction KillTimer(). Comme les timers ont des identifiants, il est possible de créer différents timers avec des intervalles différents. L'identifiant du timer est passé en paramètre lors de la réception du message WM_TIMER.
Voici un exemple utilisant un timer sans fenêtre :
MSG msg; SetTimer(NULL,NULL,60000,NULL);
while(GetMessage(&msg,NULL,0,0)) { if(msg.message==WM_TIMER) MessageBox(NULL,"Déjà une minute de passé!","Info",MB_OK); }
|