wxFatalError(_("Cannot initialize OLE"));
#endif
-#if CTL3D
+#if wxUSE_CTL3D
if (!Ctl3dRegister(wxhInstance))
wxFatalError("Cannot register CTL3D");
// This is to foil optimizations in Visual C++ that throw out dummy.obj.
// PLEASE DO NOT ALTER THIS.
-#if defined(_MSC_VER) && !defined(WXMAKINGDLL)
+#if defined(__VISUALC__) && !defined(WXMAKINGDLL)
extern char wxDummyChar;
if (wxDummyChar) wxDummyChar++;
#endif
void wxApp::CleanUp()
{
//// COMMON CLEANUP
+
+ // flush the logged messages if any
+ wxLog *pLog = wxLog::GetActiveTarget();
+ if ( pLog != NULL && pLog->HasPendingMessages() )
+ pLog->Flush();
+
+ // One last chance for pending objects to be cleaned up
+ wxTheApp->DeletePendingObjects();
+
wxModule::CleanUpModules();
#if wxUSE_WX_RESOURCES
::OleUninitialize();
#endif
-#if CTL3D
+#if wxUSE_CTL3D
Ctl3dUnregister(wxhInstance);
#endif
#if !defined(_WINDLL) || (defined(_WINDLL) && defined(WXMAKINGDLL))
// temporarily disable this warning
-#ifdef _MSC_VER
+#ifdef __VISUALC__
#pragma warning(disable: 4715) // not all control paths return a value
#endif // Visual C++
// FIXME other compilers must support Win32 SEH (structured exception
// handling) too, just find the appropriate keyword in their docs!
// Please note that it's _not_ the same as C++ exceptions!
-#if !defined(__WXDEBUG__) && defined(_MSC_VER) && !defined(__MWERKS__)
+#if !defined(__WXDEBUG__) && defined(__VISUALC__)
#define CATCH_PROGRAM_EXCEPTIONS
- __try {
+ __try {
#else
#undef CATCH_PROGRAM_EXCEPTIONS
#endif
{
retValue = wxTheApp->OnRun();
}
+ else
+ // We want to initialize, but not run or exit immediately.
+ return 1;
}
//else: app initialization failed, so we skipped OnRun()
wxTheApp->OnExit();
- // flush the logged messages if any
- wxLog *pLog = wxLog::GetActiveTarget();
- if ( pLog != NULL && pLog->HasPendingMessages() )
- pLog->Flush();
-
-
wxApp::CleanUp();
return retValue;
}
// restore warning state
-#ifdef _MSC_VER
+#ifdef __VISUALC__
#pragma warning(default: 4715) // not all control paths return a value
#endif // Visual C++
// For some reason, with MSVC++ 1.5, WinMain isn't linked in properly
// if in a separate file. So include it here to ensure it's linked.
-#if (defined(_MSC_VER) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__))
+#if (defined(__VISUALC__) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__))
#include "main.cpp"
#endif