Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/10/2013, 12:48
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 5 meses
Puntos: 83
Respuesta: Temporizadores con parámetros

Tienes algo mal en el codigo que omites. Te pongo un procedimiento principal aislado que funciona correctamente (compila como aplicacion de consola aun cuando es aplicacion gui, solo para ver los printf):

Código C:
Ver original
  1. struct TIMERDATA {
  2.     unsigned int hTimer;
  3.     int data;
  4. };
  5. struct TIMERDATA timerList[3];
  6.  
  7.  
  8.  
  9. void CALLBACK UnBan(HWND hwnd, unsigned int msg, unsigned id, unsigned long st) {
  10.         struct TIMERDATA *ptr;
  11.  
  12.         if((ptr = (id < 3)? &timerList[id] : 0)) {
  13.             printf("ID %d, DATA %d\n", id, ptr->data);
  14.             ptr->data += 1;//modifico para comprovar que funciona
  15.         }
  16. }
  17.  
  18.  
  19. LRESULT CALLBACK procedimientoPrincipal(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
  20.     switch(msg) {
  21.         case WM_CREATE: {
  22.             int q;
  23.  
  24.             for(q = 0; q < 3; q++) {
  25.                 timerList[q].data = q+10;
  26.                 timerList[q].hTimer = SetTimer(hwnd, q, 2000, UnBan);
  27.  
  28.                 Sleep(500);//delay para que no salten todos a la vez, no es necesario
  29.             }
  30.         }
  31.         break;
  32.         case WM_CLOSE: {
  33.             DestroyWindow(hwnd);
  34.         }
  35.         break;
  36.  
  37.         case WM_DESTROY: {
  38.             PostQuitMessage(0);
  39.         }
  40.         break;
  41.  
  42.         default: return DefWindowProc(hwnd, msg, wParam, lParam);
  43.     }
  44.  
  45.     return 0;
  46. }


Comprueba que esto funciona y como funciona, luego implementa en tu aplicacion y tiene que funcionar igual.

Saludos
vosk