while (TRUE)
{
    if (PeekMessage (&msg, NULL, 0, 0,PM_REMOVE))        
    {        
if (msg.message == WM_QUIT)
{
     break;
}

TranslateMessage (&msg) ;        
DispatchMessage (&msg) ;        
     } 
     else
     {
f();
      }
      Sleep(1); 
}     f()里面调用InvalidateRect产生WMPAINT。结果是如果鼠标在窗口上不断移动,那么就一直延迟f的调用,不产生WMPAINT。
而去掉else的话,如果鼠标在窗口上不断移动,那么f产生的PAINT会一直被忽略而f的其他计算仍然继续,直到鼠标停止。
总之只要鼠标在窗口上移动,画面就会卡住,两种代码,前者延迟f的调用,后者忽略f的WMPAINT。