X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33349a2073d54c2c95146627fca01839956306ed..32cd189dfcfe96c41e32c3b9827bf67484c60b13:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 9a26a78043..6a18714bf7 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp +// Name: src/msw/app.cpp // Purpose: wxApp // Author: Julian Smart // Modified by: @@ -17,10 +17,6 @@ // headers // --------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "app.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -29,6 +25,7 @@ #endif #ifndef WX_PRECOMP + #include "wx/dynarray.h" #include "wx/frame.h" #include "wx/app.h" #include "wx/utils.h" @@ -42,9 +39,7 @@ #include "wx/dialog.h" #include "wx/msgdlg.h" #include "wx/intl.h" - #include "wx/dynarray.h" #include "wx/wxchar.h" - #include "wx/icon.h" #include "wx/log.h" #endif @@ -52,6 +47,7 @@ #include "wx/filename.h" #include "wx/module.h" #include "wx/dynlib.h" +#include "wx/evtloop.h" #include "wx/msw/private.h" #include "wx/msw/ole/oleutils.h" @@ -113,8 +109,6 @@ // global variables // --------------------------------------------------------------------------- -extern wxList WXDLLEXPORT wxPendingDelete; - #if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) extern void wxSetKeyboardHook(bool doIt); #endif @@ -222,7 +216,14 @@ bool wxGUIAppTraits::DoMessageFromThreadWait() { // we should return false only if the app should exit, i.e. only if // Dispatch() determines that the main event loop should terminate - return !wxTheApp || wxTheApp->Dispatch(); + wxEventLoop *evtLoop = wxEventLoop::GetActive(); + if ( !evtLoop || !evtLoop->Pending() ) + { + // no events means no quit event + return true; + } + + return evtLoop->Dispatch(); } wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo() @@ -296,14 +297,20 @@ bool wxApp::Initialize(int& argc, wxChar **argv) } #endif -#if defined(__WIN95__) && !defined(__WXMICROWIN__) +#if !defined(__WXMICROWIN__) InitCommonControls(); -#endif // __WIN95__ +#endif // !defined(__WXMICROWIN__) #if defined(__SMARTPHONE__) || defined(__POCKETPC__) SHInitExtraControls(); #endif +#ifndef __WXWINCE__ + // Don't show a message box if a function such as SHGetFileInfo + // fails to find a device. + SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); +#endif + wxOleInitialize(); RegisterWindowClasses(); @@ -483,7 +490,7 @@ void wxApp::CleanUp() delete wxWinHandleHash; wxWinHandleHash = NULL; - + #ifdef __WXWINCE__ free( wxCanvasClassName ); free( wxCanvasClassNameNR ); @@ -501,17 +508,6 @@ wxApp::wxApp() wxApp::~wxApp() { - // our cmd line arguments are allocated inside wxEntry(HINSTANCE), they - // don't come from main(), so we have to free them - - while ( argc ) - { - // m_argv elements were allocated by wxStrdup() - free(argv[--argc]); - } - - // but m_argv itself -- using new[] - delete [] argv; } // ---------------------------------------------------------------------------- @@ -593,6 +589,7 @@ int wxApp::GetComCtl32Version() // we're prepared to handle the errors wxLogNull noLog; +#if wxUSE_DYNLIB_CLASS // do we have it? wxDynamicLibrary dllComCtl32(_T("comctl32.dll"), wxDL_VERBATIM); @@ -650,6 +647,7 @@ int wxApp::GetComCtl32Version() } } } +#endif } return s_verComCtl32; @@ -727,7 +725,7 @@ terminate the program,\r\n\ \"Retry\" to exit the program normally and \"Ignore\" to try to continue."), _T("Unhandled exception"), MB_ABORTRETRYIGNORE | - MB_ICONERROR| + MB_ICONERROR| MB_TASKMODAL ) ) @@ -755,8 +753,6 @@ terminate the program,\r\n\ #if WXWIN_COMPATIBILITY_2_4 -#include "wx/evtloop.h" - void wxApp::DoMessage(WXMSG *pMsg) { wxEventLoop *evtLoop = wxEventLoop::GetActive(); @@ -777,4 +773,3 @@ bool wxApp::ProcessMessage(WXMSG* pMsg) } #endif // WXWIN_COMPATIBILITY_2_4 -