Don't use GetTickCount, it has a very low resolution. QueryPerformanceCounter or timeGetTime are better.

Also, it is better to store positions, speeds etc. as floating-point (i.e. Single/Double) rather than integers.