la funcion SetTimer del WinAPI, se encarga de eso, tansolo le das el tiempo en millisegundos y la funciona a ejecutar.
aqui teienes un pequeño ejemplo del uso de SetTimer:
Código:
// El periodo es en segundos e incluye el tiempo de la alarma
#include <windows.h>
#include <stdio.h>
VOID CALLBACK Beeper (HWND, UINT, UINT, DWORD);
UINT TimerId;
int main (int argc, LPTSTR argv [])
{
UINT idEvent = 0, Period = 2;
//if (argc >= 2) sscanf(argv[1],"%d",&Period);
//else Period = 2;
TimerId = SetTimer (NULL, idEvent, Period*1000, Beeper);
if (TimerId == 0) printf("Fallo al inicializar el timer");
MessageBox (NULL,"BEEPER","Stop", MB_ICONEXCLAMATION);
KillTimer (NULL, TimerId);
return 0;
}
VOID CALLBACK Beeper (HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
Beep (1000 /* Frecuencia */, 250 /* Duracion */);
printf("Hola\n");
return;
}
en este caso uso MessageBox, para detener la aplicacion y ver el funcionamiento del Timer, si tu programa es de consola, podrias usar Sleep, si es de VEntanas, el mismo bucle de mensajes se encarga de eso.
Saludos.