1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include <windows.h>
#include <stdio.h>
unsigned long ticks = 0;
unsigned int IdTimer = 0;
// cette fonction incremente simplement un compteur
void CALLBACK myInt(unsigned int arg1, unsigned int arg2, int arg3, DWORD arg4, DWORD arg5){
ticks++;
}
int main(int argc, unsigned char** argv){
// definition de la periode de l'it, 47 millisecondes, 21 Hz a peu pres
#define PERIODE 47
// calcul de la resolution maximum
TIMECAPS tc;
timeGetDevCaps(&tc, sizeof(TIMECAPS));
DWORD resolution = min(max(tc.wPeriodMin, 0), tc.wPeriodMax);
timeBeginPeriod(resolution);
// configuration d'une interruption appelant "myInt" toutes les 47 millisecondes
IdTimer = timeSetEvent(PERIODE, resolution, (LPTIMECALLBACK) myInt, (DWORD)0, TIME_PERIODIC);
// numero du process-timer pour pouvoir le detruire en sortant
printf("Id du timer : %u\n",IdTimer);
//affichage pendant 5 secondes des ticks incrementes par l'interruption
while (ticks < 5000 / PERIODE){
printf("\r%u",ticks);
}
// destruction du timer
timeKillEvent(IdTimer);
// retour au programme appelant
return (0);
} |
Partager