diff --git a/include/wx/msw/mfc.h b/include/wx/msw/mfc.h index 830db351ac..f670b1b843 100644 --- a/include/wx/msw/mfc.h +++ b/include/wx/msw/mfc.h @@ -113,8 +113,13 @@ public: { BOOL moreIdle = BaseApp::OnIdle(lCount); - if ( wxTheApp && wxTheApp->ProcessIdle() ) - moreIdle = TRUE; + if ( wxTheApp ) + { + wxTheApp->ProcessPendingEvents(); + + if ( wxTheApp->ProcessIdle() ) + moreIdle = TRUE; + } return moreIdle; } @@ -172,6 +177,17 @@ public: // instead. ::PostQuitMessage(0); } + + void WakeUpIdle() wxOVERRIDE + { + // As above, we can't wake up any wx event loop, so try to wake up the + // MFC one instead. + CWinApp* const mfcApp = AfxGetApp(); + if ( mfcApp && mfcApp->m_pMainWnd ) + { + ::PostMessage(mfcApp->m_pMainWnd->m_hWnd, WM_NULL, 0, 0); + } + } }; #endif // _WX_MSW_MFC_H_