- m_bKeepGoing = TRUE;
-
- while (m_bKeepGoing)
- {
-#if wxUSE_THREADS
- wxMutexGuiLeaveOrEnter();
-#endif // wxUSE_THREADS
- while (!::WinPeekMsg(vHabmain, &svCurrentMsg, (HWND)NULL, 0, 0, PM_NOREMOVE) &&
- ProcessIdle() )
- {
- }
- DoMessage();
- }
- return (int)svCurrentMsg.mp1;
-}
-
-//
-// Returns TRUE if more time is needed.
-//
-bool wxApp::ProcessIdle()
-{
- wxIdleEvent vEvent;
-
- vEvent.SetEventObject(this);
- ProcessEvent(vEvent);
- return vEvent.MoreRequested();
-}
-
-#if wxUSE_THREADS
-void wxApp::ProcessPendingEvents()
-{
- wxNode* pNode = wxPendingEvents->First();
- wxCriticalSectionLocker vLocker(*wxPendingEventsLocker);
-
- while (pNode)
- {
- wxEvtHandler* pHandler = (wxEvtHandler *)pNode->Data();
- pHandler->ProcessPendingEvents();
-
- delete pNode;
- pNode = wxPendingEvents->First();
- }
-}
-#endif
-
-void wxApp::ExitMainLoop()
-{
- m_bKeepGoing = FALSE;
-}
-
-bool wxApp::Pending()
-{
- return (::WinPeekMsg(vHabmain, (PQMSG)&svCurrentMsg, (HWND)NULL, 0, 0, PM_NOREMOVE) != 0);
-}
-
-void wxApp::Dispatch()
-{
- DoMessage();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-//
-// Give all windows a chance to preprocess
-// the message. Some may have accelerator tables, or have
-// MDI complications.
-//
-//////////////////////////////////////////////////////////////////////////////
-bool wxApp::ProcessMessage(
- WXMSG* pWxmsg
-)
-{
- QMSG* vMsg = (PQMSG)pWxmsg;
- HWND hWnd = vMsg->hwnd;
- wxWindow* pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
- wxWindow* pWnd;
-
- //
- // for some composite controls (like a combobox), wndThis might be NULL
- // because the subcontrol is not a wxWindow, but only the control itself
- // is - try to catch this case
- //
- while (hWnd && !pWndThis)
- {
- hWnd = ::WinQueryWindow(hWnd, QW_PARENT);
- pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
- }
-
- // Anyone for a non-translation message? Try youngest descendants first.
- for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent())
- {
- if (pWnd->OS2ProcessMessage(pWxmsg))
- return TRUE;
- }
- return FALSE;
-}
-
-void wxApp::OnIdle(
- wxIdleEvent& rEvent
-)
-{
- static bool sbInOnIdle = FALSE;
-