If PeekMessage() is supposed to do the same thing that GetMessage() does but without waiting for there to be a retriavable message, why would somebody use GetMessage() after PeekMessage() has been called?
while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
{
// Translate and dispatch to WindowProc if not WM_QUIT
GetMessage( &msg, NULL, 0, 0 );
TranslateMessage( &msg );
DispatchMessage( &msg );
}