In my actual app, the sleep is never called with anything > 50ms, and that I had tested clicking like crazy, with no problems.
I just tried it with the 10 second pause test project, and your right, that gave the ANR message if I clicked during the pause.
I personally prefer the above method for my short times, so will use it in this case, and nothing too much longer. Not a fan of the pure DoEvents loop; even though in practice, the DoEvents at the top of the procedure simulates it as it will happen every 50ms or so (ie between each animation frame).