X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3d104ec3570c714e770784003d6eafe9f9226d9a..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/msw/main.cpp diff --git a/src/msw/main.cpp b/src/msw/main.cpp index 76b9064c08..577873e340 100644 --- a/src/msw/main.cpp +++ b/src/msw/main.cpp @@ -93,7 +93,7 @@ extern int wxEntryReal(int& argc, wxChar **argv); #endif // __VISUALC__/!__VISUALC__ // ---------------------------------------------------------------------------- -// wrapper wxEntry catching all Win32 exceptions occuring in a wx program +// wrapper wxEntry catching all Win32 exceptions occurring in a wx program // ---------------------------------------------------------------------------- // wrap real wxEntry in a try-except block to be able to call @@ -219,11 +219,11 @@ int wxEntry(int& argc, wxChar **argv) { wxFatalExit(); -#ifndef __VISUALC__ +#if !defined(_MSC_VER) || defined(__WXDEBUG__) || (defined(_MSC_VER) && _MSC_VER <= 1200) // this code is unreachable but put it here to suppress warnings in some compilers // and disable for others to supress warnings too return -1; -#endif // !__VISUALC__ +#endif // !__VISUALC__ in release build } } @@ -262,6 +262,28 @@ WXDLLEXPORT int wxEntry(HINSTANCE hInstance, wxCmdLineArgType WXUNUSED(pCmdLine), int nCmdShow) { + // the first thing to do is to check if we're trying to run an Unicode + // program under Win9x w/o MSLU emulation layer - if so, abort right now + // as it has no chance to work and has all chances to crash +#if wxUSE_UNICODE && !wxUSE_UNICODE_MSLU && !defined(__WXWINCE__) + if ( wxGetOsVersion() != wxWINDOWS_NT ) + { + // note that we can use MessageBoxW() as it's implemented even under + // Win9x - OTOH, we can't use wxGetTranslation() because the file APIs + // used by wxLocale are not + ::MessageBox + ( + NULL, + _T("This program uses Unicode and requires Windows NT/2000/XP.\nProgram aborted."), + _T("wxWidgets Fatal Error"), + MB_ICONERROR | MB_OK + ); + + return -1; + } +#endif // wxUSE_UNICODE && !wxUSE_UNICODE_MSLU + + // remember the parameters Windows gave us wxSetInstance(hInstance); wxApp::m_nCmdShow = nCmdShow;