X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/184b5d99a5382cd7a19888c85aff11f8a21af2f6..50c319beec2454b4f669b6c8cf3d089f53c979f6:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index f0c45de1cd..300ec55493 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -50,18 +50,32 @@ #include #endif -// use debug CRT functions for memory leak detections in VC++ -/* Here we go again commenting it out. PLEASE don't - * uncomment this again. -#if defined(__WXDEBUG__) && defined(_MSC_VER) +// use debug CRT functions for memory leak detections in VC++ if we're not +// using wxWindows own methods +#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__) + #define wxUSE_VC_CRTDBG +#else + #undef wxUSE_VC_CRTDBG +#endif + +#ifdef wxUSE_VC_CRTDBG // VC++ uses this macro as debug/release mode indicator #ifndef _DEBUG #define _DEBUG #endif + /* Need to undef new if including crtdbg.h */ + #ifdef new + #undef new + #endif + #include + + #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS + #define new new(__FILE__,__LINE__) + #endif + #endif -*/ extern char *wxBuffer; extern char *wxOsVersion; @@ -113,54 +127,40 @@ long wxApp::sm_lastMessageTime = 0; bool wxApp::Initialize() { - wxBuffer = new char[1500]; + // Some people may wish to use this, but + // probably it shouldn't be here by default. +#ifdef __WXDEBUG__ +// wxRedirectIOToConsole(); +#endif + + wxBuffer = new char[1500]; -/* PLEASE don't uncomment this again. IT DOESN'T WORK when building - * using the makefile. - #if defined(__WXDEBUG__) && defined(_MSC_VER) +#ifdef wxUSE_VC_CRTDBG // do check for memory leaks on program exit // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free // deallocated memory which may be used to simulate low-memory condition) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); - #endif // debug build under MS VC++ -*/ - - -// 22/11/98: we're converting to wxLogDebug instead of wxTrace, -// so these are now obsolete. - -#if 0 - #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - #if defined(_WINDLL) - streambuf* sBuf = NULL; - #else // EXE - streambuf* sBuf = new wxDebugStreamBuf; - #endif // DLL - - ostream* oStr = new ostream(sBuf) ; - wxDebugContext::SetStream(oStr, sBuf); - #endif // wxUSE_MEMORY_TRACING -#endif +#endif // debug build under MS VC++ - wxClassInfo::InitializeClasses(); + wxClassInfo::InitializeClasses(); - #if wxUSE_RESOURCES +#if wxUSE_RESOURCES wxGetResource("wxWindows", "OsVersion", &wxOsVersion); - #endif +#endif - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); + wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); + wxTheColourDatabase->Initialize(); - wxInitializeStockLists(); - wxInitializeStockObjects(); + wxInitializeStockLists(); + wxInitializeStockObjects(); - #if wxUSE_WX_RESOURCES +#if wxUSE_WX_RESOURCES wxInitializeResourceSystem(); - #endif +#endif - wxBitmap::InitStandardHandlers(); + wxBitmap::InitStandardHandlers(); - #if defined(__WIN95__) +#if defined(__WIN95__) InitCommonControls(); gs_hRichEdit = LoadLibrary("RICHED32.DLL"); @@ -168,60 +168,77 @@ bool wxApp::Initialize() { wxMessageBox("Could not initialise Rich Edit DLL"); } - #endif +#endif + + int iMsg = 96; + + // for OLE, enlarge message queue to be as large as possible + while (!SetMessageQueue(iMsg) && (iMsg -= 8)); - #if defined(WX_DRAG_DROP) +/* + DWORD dwOleVer; + dwOleVer = CoBuildVersion(); + + // check the OLE library version + if (rmm != HIWORD(dwOleVer)) + { + wxMessageBox("Incorrect version of OLE libraries."); + return FALSE; + } +*/ + +#ifndef __GNUWIN32__ // we need to initialize OLE library if ( FAILED(::OleInitialize(NULL)) ) wxFatalError(_("Cannot initialize OLE")); - #endif +#endif - #if CTL3D +#if CTL3D if (!Ctl3dRegister(wxhInstance)) wxFatalError("Cannot register CTL3D"); Ctl3dAutoSubclass(wxhInstance); - #endif +#endif - g_globalCursor = new wxCursor; + g_globalCursor = new wxCursor; - wxSTD_FRAME_ICON = LoadIcon(wxhInstance, "wxSTD_FRAME"); - wxSTD_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDIPARENTFRAME"); - wxSTD_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDICHILDFRAME"); + wxSTD_FRAME_ICON = LoadIcon(wxhInstance, "wxSTD_FRAME"); + wxSTD_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDIPARENTFRAME"); + wxSTD_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDICHILDFRAME"); - wxDEFAULT_FRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_FRAME"); - wxDEFAULT_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDIPARENTFRAME"); - wxDEFAULT_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDICHILDFRAME"); + wxDEFAULT_FRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_FRAME"); + wxDEFAULT_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDIPARENTFRAME"); + wxDEFAULT_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDICHILDFRAME"); - RegisterWindowClasses(); + RegisterWindowClasses(); - // Create the brush for disabling bitmap buttons + // Create the brush for disabling bitmap buttons - LOGBRUSH lb ; - lb.lbStyle = BS_PATTERN; - lb.lbHatch = (int)LoadBitmap( wxhInstance, "wxDISABLE_BUTTON_BITMAP" ) ; - wxDisableButtonBrush = ::CreateBrushIndirect( & lb ) ; - ::DeleteObject( (HGDIOBJ)lb.lbHatch ) ; + LOGBRUSH lb ; + lb.lbStyle = BS_PATTERN; + lb.lbHatch = (int)LoadBitmap( wxhInstance, "wxDISABLE_BUTTON_BITMAP" ) ; + wxDisableButtonBrush = ::CreateBrushIndirect( & lb ) ; + ::DeleteObject( (HGDIOBJ)lb.lbHatch ) ; - #if wxUSE_PENWINDOWS +#if wxUSE_PENWINDOWS wxRegisterPenWin(); - #endif +#endif - wxWinHandleList = new wxList(wxKEY_INTEGER); + wxWinHandleList = new wxList(wxKEY_INTEGER); - // This is to foil optimizations in Visual C++ that - // throw out dummy.obj. - #if (_MSC_VER >= 800) && !defined(WXMAKINGDLL) + // This is to foil optimizations in Visual C++ that + // throw out dummy.obj. +#if (_MSC_VER >= 800) && !defined(WXMAKINGDLL) extern char wxDummyChar; if (wxDummyChar) wxDummyChar++; - #endif +#endif - wxSetKeyboardHook(TRUE); + wxSetKeyboardHook(TRUE); - wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) - return FALSE; - return TRUE; + wxModule::RegisterModules(); + if (!wxModule::InitializeModules()) + return FALSE; + return TRUE; } //// RegisterWindowClasses @@ -487,7 +504,7 @@ void wxApp::CleanUp() if ( wxDisableButtonBrush ) ::DeleteObject( wxDisableButtonBrush ) ; -#if defined(WX_DRAG_DROP) +#ifndef __GNUWIN32__ ::OleUninitialize(); #endif @@ -872,7 +889,7 @@ bool wxApp::SendIdleEvents(wxWindow* win) if (event.MoreRequested()) needMore = TRUE; - wxNode* node = win->GetChildren()->First(); + wxNode* node = win->GetChildren().First(); while (node) { wxWindow* win = (wxWindow*) node->Data();