MsgWaitForMultipleObjects is definately better because if a broadcast message are sent you risk that the system (or process sending the message) will hang for 200 ms.
So instead of Sleep do:
MsgWaitForMultipleObjects(0, NULL, FALSE, 200, QS_ALLINPUT);
Another approach would be not to run the game(/application) loop at all when the app is minimized but it depends on what your game(/application) must do when it is minimized.