Good to see you are still around

The first thing I would do is replace MainLoopHandler() with a function that does nothing accept check your fps counter. By doing that you can make sure that your game logic is not taking longer than expected in your main loop.
I assume that you FPS counter is not running from the WM_TIMER event as this has proven in the past to be very unreliable.
Other than that, the code looks ok. To test your logic set the +10 to +1000, that way you can check the fps is constant ie 1 fps
I hope this is of some help
BadBazza