I think this behavior is an indication that DoEvents really is just a PeekMessage loop under the hood

IIRC, it is.

What is it that you're waiting for? This might give us some clues about other ways to wait for it.
_________________________
-- roger