C/Visual C - Timer en C para windows

 
Vista:

Timer en C para windows

Publicado por Wylly (11 intervenciones) el 11/04/2003 12:26:17
Hola, me gustaria saber como puedo crear un timer en C para Windows (en principio para el 2000 aunque no creo que haya diferencias). Muchas gracias por la ayuda,

Wylly
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Crear un timer en C para Windows

Publicado por Alejandro (1070 intervenciones) el 13/05/2025 22:37:28
Para crear un timer en C en un entorno de Windows, puedes utilizar la función `SetTimer` de la API de Windows. A continuación, te muestro un ejemplo básico de cómo hacerlo:

1. Incluir las bibliotecas necesarias:

Asegúrate de incluir las siguientes bibliotecas en tu código:

1
#include <windows.h>

2. Definir el procedimiento de la ventana:

Necesitarás un procedimiento de ventana que maneje los mensajes, incluyendo el mensaje del timer (`WM_TIMER`).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
        case WM_TIMER:
            // Aquí manejas el evento del timer
            MessageBox(hwnd, "Timer triggered!", "Notification", MB_OK);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}

3. Crear la ventana y el timer:

En tu función `main`, crea la ventana y establece el timer:

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
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    // Registro de la clase de la ventana
    const char CLASS_NAME[] = "Sample window class";
 
    WNDCLASS wc = { };
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
 
    RegisterClass(&wc);
 
    // Crear la ventana
    HWND hwnd = CreateWindowEx(
        0, CLASS_NAME, "Timer example",
        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL
    );
 
    ShowWindow(hwnd, nShowCmd);
 
    // Crear el timer
    SetTimer(hwnd, 1, 1000, NULL); // Timer ID 1, cada 1000 ms (1 segundo)
 
    // Bucle de mensajes
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return 0;
}

Notas importantes:



- SetTimer: La función `SetTimer` toma cuatro parámetros: el manejador de la ventana, un identificador para el timer, el intervalo en milisegundos y un puntero a una función de callback (que puedes dejar como `NULL` si manejas el timer en el procedimiento de la ventana).
- WM_TIMER: Cuando el timer se activa, se envía un mensaje `WM_TIMER` a la ventana, donde puedes manejar la lógica que deseas ejecutar.
- Destrucción del timer: Si deseas detener el timer, puedes usar `KillTimer(hwnd, 1);` en el procedimiento de la ventana, por ejemplo, en el mensaje `WM_DESTROY`.

Con este ejemplo, deberías poder crear y manejar un timer en tu aplicación de Windows. ¡Espero que esto te ayude!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar