ウィンドウメッセージを使ってその精度が維持できると思っているのが間違い。
timeSetEvent() でもつかったら?