/////////////////////////////////////////////////////////////////////////////
-// Name: msw/main.cpp
+// Name: src/msw/main.cpp
// Purpose: WinMain/DllMain
// Author: Julian Smart
// Modified by:
#pragma hdrstop
#endif
-#include "wx/event.h"
-#include "wx/app.h"
+#ifndef WX_PRECOMP
+ #include "wx/event.h"
+ #include "wx/app.h"
+ #include "wx/utils.h"
+#endif //WX_PRECOMP
+
#include "wx/cmdline.h"
#include "wx/scopeguard.h"
#include "wx/msw/private.h"
+#include "wx/msw/seh.h"
#if wxUSE_ON_FATAL_EXCEPTION
#include "wx/datetime.h"
#include "wx/msw/crashrpt.h"
-
- #ifdef __VISUALC__
- #include <eh.h>
- #endif // __VISUALC__
#endif // wxUSE_ON_FATAL_EXCEPTION
#ifdef __WXWINCE__
// this warns that /EHa (async exceptions) should be used when using
// _set_se_translator but, in fact, this doesn't seem to change anything
- // with VC++ up to 7.1 -- to be confirmed with VC++ 8
- #if _MSC_VER <= 1310
+ // with VC++ up to 8.0
+ #if _MSC_VER <= 1400
#pragma warning(disable:4535)
#endif
wxGlobalSEInformation = pExcPtrs;
// give the user a chance to do something special about this
- __try
+ wxSEH_TRY
{
wxTheApp->OnFatalException();
}
- __except ( EXCEPTION_EXECUTE_HANDLER )
- {
- // nothing to do here, just ignore the exception inside the
- // exception handler
- ;
- }
+ wxSEH_IGNORE // ignore any exceptions inside the exception handler
wxGlobalSEInformation = NULL;
#ifdef __VISUALC__
-static void wxSETranslator(unsigned int WXUNUSED(code), EXCEPTION_POINTERS *ep)
+void wxSETranslator(unsigned int WXUNUSED(code), EXCEPTION_POINTERS *ep)
{
switch ( wxGlobalSEHandler(ep) )
{
wxString name = wxString::Format
(
_T("%s_%s_%lu.dmp"),
- wxTheApp ? wxTheApp->GetAppName().c_str()
+ wxTheApp ? (const wxChar*)wxTheApp->GetAppName().c_str()
: _T("wxwindows"),
wxDateTime::Now().Format(_T("%Y%m%dT%H%M%S")).c_str(),
::GetCurrentProcessId()
{
DisableAutomaticSETranslator();
- __try
+ wxSEH_TRY
{
return wxEntryReal(argc, argv);
}
- __except ( wxGlobalSEHandler(GetExceptionInformation()) )
- {
- wxFatalExit();
-
-#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__ in release build
- }
+ wxSEH_HANDLE(-1)
}
#else // !wxUSE_ON_FATAL_EXCEPTION
{
static const wchar_t *ERROR_STRING = L"wxWidgets Fatal Error";
- if ( wxGetOsVersion() != wxWINDOWS_NT )
+ if ( wxGetOsVersion() != wxOS_WINDOWS_NT )
{
// we need to be built with MSLU support
-#if !wxUSE_UNICODE_MSLU
+#if !wxUSE_UNICODE_MSLU
// 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
}
#endif // wxUSE_BASE
-