15/10/2013, 15:14
|
| | Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 5 meses Puntos: 83 | |
Respuesta: Temporizadores con parámetros Tampoco yo creo que influya el trabajar con una dll, si tengo un momento lo probaré a ver que no sea eso. Por lo demas me parece que esta es la unica forma (hay varias versiones pero se basan en lo mismo: guardar la lista dinamica, guardar la lista en la cbWndExtra del WNDCLASSEX con el que vas a trabajar y recuperar el handler de la ventana a traves de hwnd que recibes en el callback, etc).
En caso de que el echo de trabajar con una dll si influya comprueba lo siguiente:
Comprueba el valor de retorno de todos los SetTimer: 0 para error, >0 para success. Si retorna >0 será un identificador del timer interno (el que se indica como nIDEvent en SetTimer será un identificador de usuario, no tienen porque ser iguales).
Comprueba que los valores retornados no sean los que obtienes como identificador interno del timer (los que retorna la funcion SetTimer). En caso de que sean el mismo valor se tendria que modificar el trabajo, para recuperarlo recorrer la lista y recuperar la struct donde coinciden el id del timer con el hTimer de la struct (ya sea a lo cutre por fuerza bruta, o usando algun tipo de listas de acceso rapido). La idea de la estructura es para guardar mas datos sobre el timer y poder automatizar el proceso; en el ejemplo que te puse hTimer no coincide con nIDEvent, pero necesito nIDEvent como indice del elemento en la lista, y tambien hTimer para matar el proceso en caso necesario.
Una otra cosa: en esta aplicacion estos timers son los unicos que manejas? Y la funcion callback se ejecuta unicamente desde los timers? Si no es asi esto significaria que no recibes los eventos de los timers esperados.
Por cierto, lo que me comentas de usar un puntero donde recuperar los datos es para facilitar la lectura de codigo: elimina la ambiguacion porque en el calback el 'id' no significa indice de elemento sino identificador del timer aun cuando en la practica y unicamente en este caso sean lo mismo.
En principio no se me ocurre nada mejor, siento no ser de mas ayuda.
Saludos
vosk |