X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/169935ad4ed842421ef24470a06d1aa298f90fbe..71b8c213cb2c676b4715ef37e6155da3601f7881:/src/msw/app.cpp?ds=sidebyside diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 418073ea9f..ba4a42af25 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -192,7 +192,7 @@ bool wxApp::Initialize() wxFatalError(_("Cannot initialize OLE")); #endif -#if CTL3D +#if wxUSE_CTL3D if (!Ctl3dRegister(wxhInstance)) wxFatalError("Cannot register CTL3D"); @@ -227,7 +227,7 @@ bool wxApp::Initialize() // 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 @@ -248,7 +248,7 @@ bool wxApp::RegisterWindowClasses() // Register the frame window class. WNDCLASS wndclass; // Structure used to register Windows class. - wndclass.style = CS_HREDRAW | CS_VREDRAW; + wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ; wndclass.lpfnWndProc = (WNDPROC)wxWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = sizeof( DWORD ); // was 4 @@ -272,7 +272,7 @@ bool wxApp::RegisterWindowClasses() // Register the MDI frame window class. WNDCLASS wndclass1; // Structure used to register Windows class. - wndclass1.style = CS_HREDRAW | CS_VREDRAW; + wndclass1.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ; wndclass1.lpfnWndProc = (WNDPROC)wxWndProc; wndclass1.cbClsExtra = 0; wndclass1.cbWndExtra = sizeof( DWORD ); // was 4 @@ -294,7 +294,7 @@ bool wxApp::RegisterWindowClasses() // Register the MDI child frame window class. WNDCLASS wndclass4; // Structure used to register Windows class. - wndclass4.style = CS_HREDRAW | CS_VREDRAW; + wndclass4.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ; wndclass4.lpfnWndProc = (WNDPROC)wxWndProc; wndclass4.cbClsExtra = 0; wndclass4.cbWndExtra = sizeof( DWORD ); // was 4 @@ -319,9 +319,7 @@ bool wxApp::RegisterWindowClasses() // Register the panel window class. WNDCLASS wndclass2; // Structure used to register Windows class. memset(&wndclass2, 0, sizeof(WNDCLASS)); // start with NULL defaults - // Use CS_OWNDC to avoid messing about restoring the context - // for every graphic operation. - wndclass2.style = CS_HREDRAW | CS_VREDRAW; + wndclass2.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ; wndclass2.lpfnWndProc = (WNDPROC)wxWndProc; wndclass2.cbClsExtra = 0; wndclass2.cbWndExtra = sizeof( DWORD ); // was 4 @@ -380,7 +378,8 @@ void wxApp::ConvertToStandardCommandArgs(char* lpCmdLine) ::GetModuleFileName(wxhInstance, name, WXSIZEOF(name)); // GNUWIN32 already fills in the first arg with the application name. -#if !defined(__GNUWIN32__) + // JACS: apparently not now (b20 and above?) +#if 0 // !defined(__GNUWIN32__) args.Add(name); count ++; #endif @@ -445,6 +444,15 @@ void wxApp::ConvertToStandardCommandArgs(char* lpCmdLine) 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 @@ -511,7 +519,7 @@ void wxApp::CleanUp() ::OleUninitialize(); #endif -#if CTL3D +#if wxUSE_CTL3D Ctl3dUnregister(wxhInstance); #endif @@ -545,7 +553,7 @@ void wxApp::CleanUp() #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++ @@ -565,10 +573,10 @@ int wxEntry(WXHINSTANCE hInstance, // 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 @@ -608,6 +616,9 @@ int wxEntry(WXHINSTANCE hInstance, { retValue = wxTheApp->OnRun(); } + else + // We want to initialize, but not run or exit immediately. + return 1; } //else: app initialization failed, so we skipped OnRun() @@ -630,12 +641,6 @@ int wxEntry(WXHINSTANCE hInstance, wxTheApp->OnExit(); - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - wxApp::CleanUp(); return retValue; @@ -656,7 +661,7 @@ int wxEntry(WXHINSTANCE hInstance, } // restore warning state -#ifdef _MSC_VER +#ifdef __VISUALC__ #pragma warning(default: 4715) // not all control paths return a value #endif // Visual C++ @@ -1121,8 +1126,13 @@ HINSTANCE wxGetInstance() return wxhInstance; } +void wxSetInstance(HINSTANCE hInst) +{ + wxhInstance = hInst; +} + // 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