RE:Necesito construir timer q cuente milisegundos
Eso es tecnicamente IMPOSIBLE. No se puede crear un timer que sea preciso al 100% porque la presición depende del hardware, más precisamente del procesador.
Eso significa que quizás sea preciso en tu máquina pero en otra no. Si confiás en un timer para realizar tareas de precisión NUNCA vas a conseguir los resultados esperados.
¡¡Bueno man!! ¡¡Si tanto necesitas un timer más preciso que el de VB usá uno del sistema!!
Para saber la presición que puede llegar a tener un timer de alta-resolución deberías usar la función QueryPerformanceFrequency de la API de Win32. Esta función devuelve la frecuencia (en cuentas por segundo) del contador de alta-resolución del sistema, si existe. Por ejemplo:
Function GetPerformanceFreq() As Double
Dim r&, cFreq As Currency
'Obtiene el valor requerido.
r = QueryPerformanceFrequency(cFreq)
If r = 0 Then
MsgBox "El hardware instalado no soporta contadores de alta resolución", vbCritical
Else
GetPerformanceFreq = 1 / (cFreq * 10000)
End If
End Function
De esta forma conocés si tu sistema soporta contadores de alta resolución y la precisión de la frecuencia. Si el sistema lo soporta entonces ahora podrías usar la función GetTickCount() para crear un pseudo-timer y un evento para notificar cada lapso de tiempo. También existe la función timeGetTime que igual que GetTickCount, pero yo hize varias pruebas y es más precisa GetTickCount. También podría usarse una variable global para terminar el timer cuando s quiera. Por ejemplo:
Event Timer()%0