Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Tutorial d'initiation
A la programmation avec l'API Windows

Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
PrécédentIndexSuivant

Chapitre 3

Les fenêtres

9. 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);
}

PrécédentIndexSuivant

Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.