Timers en Windows

Tema Timer Versión 1.00
Resumen El siguiente documento explica la forma de implementar procesamientos dependientes del paso del tiempo. Se aborda la forma de la creación de temporizadores, su uso y su liberación.
Sistema Operativo WINDOWS 9x, Me, NT, 2000, XP
Autor Andrés A. Veiga Fecha 18/8/2001
Búsqueda Timer – SetTimer – WM_TIMER – Perioricidad

Existen dos formas de implementar temporizadores:

1) Implementación mediante mensajes:

El sistema operativo WINDOWS está orientado a eventos. Por tal motivo, la forma más directa para realizar procesamiento dependiente del paso del:

Creación del temporizador:

La misma se crea mediante el uso de la función SetTimer. La misma recibe 4 parámetros:

1. Hwnd: Es el Handle de la ventana que recibirá los mensajes de notificación.

2. IdTimer: Es un identificador de Timer. Este parámetro permite diferenciar la procedencia de los mensajes en el caso de ventanas que inician más de un temporizador. Debe ser un número >0.

3. UTimeout: Es el período (en milisegundos) que deseamos que trancurra entre cada mensaje de notificación.

4. Tmprc: Debe ser NULL

Notificación del paso del tiempo

Cada Utimeout milisegundos WINDOWS despachará un mensaje WM_TIMER a nuestra aplicación. Dicho mensaje tendrá como wParam el IdTimer del timer de donde proviene la nitificación y como lParam tendrá NULL.

Liberación del temporizador

Esta operación es realizada mediante la función KillTimer, la cual recibe los siguientes parámetros:

1. Hwnd: Es el Handle de la ventana que recibirá los mensajes de notificación.

2. IdTimer: Es el identificador de Timer usado en su creación. Este parámetro permite especificar el timer a eliminar en el caso de ventanas que inician más de un temporizador.

2) Implementación mediante funciones Callback:

Hay oportunidades en que un timer no está asociado a ninguna ventana, motivo por el cual no se pueden procesar mensajes. En estos casos se puede optar por la siguiente implementación:

Creación del temporizador:

La misma se logra usando la función SetTimer con los siguientes parámetros:

1. Hwnd: Debe ser NULL.

2. IdTimer: Debe ser 0.

3. UTimeout: Es el período (en milisegundos) que deseamos que trancurra entre cada mensaje de notificación.

4. Tmprc: Debe ser el puntero a una función del tipo: VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)

En esta modalidad es importante almacenar el valor devuelto por la función SetTimer.

Notificación del paso del tiempo

Cada Utimeout milisegundos WINDOWS invocará nuestra función para que podamos realizar el procesamiento necesario. La invocación se hace de la siguiente forma:

TimerProc(NULL, WM_TIMER, IdTimer, HoraEnFormatoUTC);

Liberación del temporizador

Esta operación es realizada mediante la función KillTimer, la cual recibe los siguientes parámetros:

3. Hwnd: Debe ser NULL.

4. IdTimer: Número devuelto por la la función SetTimer.