while () { MFC_Yield (); } void CMyClass::MFC_Yield () { MSG msg ; while (PeekMessage (&msg, 0, 0, 0, PM_NOREMOVE)) { if (!(AfxGetApp()->PumpMessage())) { // regenerate WM_QUIT for main message loop. ::PostQuitMessage(0); break; } } // let MFC do its idle processing LONG lIdle = 0; while (AfxGetApp()->OnIdle(lIdle++)); }