]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/app.cpp
Up-ported code to make tree item visible when programmatically
[wxWidgets.git] / src / msw / app.cpp
index 18bb7bbaed6f08a38bbd7508e7e225255169a9f0..f542a094a837011eef29159625ce8b233e3877eb 100644 (file)
 #include <string.h>
 #include <ctype.h>
 
 #include <string.h>
 #include <ctype.h>
 
-#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__))
+#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__) || defined(__WXMICROWIN__)) && !defined(__CYGWIN10__))
     #include <commctrl.h>
 #endif
 
     #include <commctrl.h>
 #endif
 
+#ifndef __WXMICROWIN__
 #include "wx/msw/msvcrt.h"
 #include "wx/msw/msvcrt.h"
+#endif
 
 // ----------------------------------------------------------------------------
 // conditional compilation
 
 // ----------------------------------------------------------------------------
 // conditional compilation
     #define _WIN32_IE 0x0200
 #endif
 
     #define _WIN32_IE 0x0200
 #endif
 
-#if _WIN32_IE >= 0x0300
+#if _WIN32_IE >= 0x0300 \
+    && !( defined(__MINGW32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
     #include <shlwapi.h>
 #endif
 
     #include <shlwapi.h>
 #endif
 
 extern wxChar *wxBuffer;
 extern wxList *wxWinHandleList;
 extern wxList WXDLLEXPORT wxPendingDelete;
 extern wxChar *wxBuffer;
 extern wxList *wxWinHandleList;
 extern wxList WXDLLEXPORT wxPendingDelete;
+#ifndef __WXMICROWIN__
 extern void wxSetKeyboardHook(bool doIt);
 extern void wxSetKeyboardHook(bool doIt);
+#endif
 
 MSG s_currentMsg;
 wxApp *wxTheApp = NULL;
 
 MSG s_currentMsg;
 wxApp *wxTheApp = NULL;
@@ -234,12 +239,11 @@ bool wxApp::Initialize()
 
     wxBitmap::InitStandardHandlers();
 
 
     wxBitmap::InitStandardHandlers();
 
-#if defined(__WIN95__)
+#if defined(__WIN95__) && !defined(__WXMICROWIN__)
     InitCommonControls();
     InitCommonControls();
-
 #endif // __WIN95__
 
 #endif // __WIN95__
 
-#if wxUSE_OLE || wxUSE_DRAG_AND_DROP || wxUSE_DATAOBJ
+#if wxUSE_OLE || wxUSE_DRAG_AND_DROP
 
 #ifdef __WIN16__
     // for OLE, enlarge message queue to be as large as possible
 
 #ifdef __WIN16__
     // for OLE, enlarge message queue to be as large as possible
@@ -247,6 +251,7 @@ bool wxApp::Initialize()
     while (!SetMessageQueue(iMsg) && (iMsg -= 8))
         ;
 #endif // Win16
     while (!SetMessageQueue(iMsg) && (iMsg -= 8))
         ;
 #endif // Win16
+
     // we need to initialize OLE library
     if ( FAILED(::OleInitialize(NULL)) )
         wxLogError(_("Cannot initialize OLE"));
     // we need to initialize OLE library
     if ( FAILED(::OleInitialize(NULL)) )
         wxLogError(_("Cannot initialize OLE"));
@@ -273,6 +278,7 @@ bool wxApp::Initialize()
 
     RegisterWindowClasses();
 
 
     RegisterWindowClasses();
 
+#ifndef __WXMICROWIN__
     // Create the brush for disabling bitmap buttons
 
     LOGBRUSH lb;
     // Create the brush for disabling bitmap buttons
 
     LOGBRUSH lb;
@@ -284,6 +290,7 @@ bool wxApp::Initialize()
         ::DeleteObject( (HGDIOBJ)lb.lbHatch );
     }
     //else: wxWindows resources are probably not linked in
         ::DeleteObject( (HGDIOBJ)lb.lbHatch );
     }
     //else: wxWindows resources are probably not linked in
+#endif
 
 #if wxUSE_PENWINDOWS
     wxRegisterPenWin();
 
 #if wxUSE_PENWINDOWS
     wxRegisterPenWin();
@@ -298,7 +305,9 @@ bool wxApp::Initialize()
     if (wxDummyChar) wxDummyChar++;
 #endif
 
     if (wxDummyChar) wxDummyChar++;
 #endif
 
+#ifndef __WXMICROWIN__
     wxSetKeyboardHook(TRUE);
     wxSetKeyboardHook(TRUE);
+#endif
 
     wxModule::RegisterModules();
     if (!wxModule::InitializeModules())
 
     wxModule::RegisterModules();
     if (!wxModule::InitializeModules())
@@ -562,7 +571,9 @@ void wxApp::CleanUp()
 
     //// WINDOWS-SPECIFIC CLEANUP
 
 
     //// WINDOWS-SPECIFIC CLEANUP
 
+#ifndef __WXMICROWIN__
     wxSetKeyboardHook(FALSE);
     wxSetKeyboardHook(FALSE);
+#endif
 
 #if wxUSE_PENWINDOWS
     wxCleanUpPenWin();
 
 #if wxUSE_PENWINDOWS
     wxCleanUpPenWin();
@@ -673,7 +684,10 @@ int wxEntry(WXHINSTANCE hInstance,
     // 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)
     // 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)
+#ifndef __WXMICROWIN__
     wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
     wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+#endif
+
 #ifdef __MWERKS__
 #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
     // This seems to be necessary since there are 'rogue'
 #ifdef __MWERKS__
 #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
     // This seems to be necessary since there are 'rogue'
@@ -705,7 +719,7 @@ int wxEntry(WXHINSTANCE hInstance,
             wxCHECK_MSG( wxApp::GetInitializerFunction(), 0,
                          wxT("No initializer - use IMPLEMENT_APP macro.") );
 
             wxCHECK_MSG( wxApp::GetInitializerFunction(), 0,
                          wxT("No initializer - use IMPLEMENT_APP macro.") );
 
-            wxTheApp = (*wxApp::GetInitializerFunction()) ();
+            wxTheApp = (wxApp*) (*wxApp::GetInitializerFunction()) ();
         }
 
         wxCHECK_MSG( wxTheApp, 0, wxT("You have to define an instance of wxApp!") );
         }
 
         wxCHECK_MSG( wxTheApp, 0, wxT("You have to define an instance of wxApp!") );
@@ -1098,6 +1112,14 @@ void wxApp::OnIdle(wxIdleEvent& event)
     wxLog::FlushActive();
 #endif // wxUSE_LOG
 
     wxLog::FlushActive();
 #endif // wxUSE_LOG
 
+#if wxUSE_DC_CACHEING
+    // automated DC cache management: clear the cached DCs and bitmap
+    // if it's likely that the app has finished with them, that is, we
+    // get an idle event and we're not dragging anything.
+    if (!::GetKeyState(MK_LBUTTON) && !::GetKeyState(MK_MBUTTON) && !::GetKeyState(MK_RBUTTON))
+        wxDC::ClearCache();
+#endif // wxUSE_DC_CACHEING
+
     // Send OnIdle events to all windows
     if ( SendIdleEvents() )
     {
     // Send OnIdle events to all windows
     if ( SendIdleEvents() )
     {
@@ -1188,6 +1210,9 @@ void wxApp::OnQueryEndSession(wxCloseEvent& event)
 /* static */
 int wxApp::GetComCtl32Version()
 {
 /* static */
 int wxApp::GetComCtl32Version()
 {
+#ifdef __WXMICROWIN__
+    return 0;
+#else
     // cache the result
     static int s_verComCtl32 = -1;
 
     // cache the result
     static int s_verComCtl32 = -1;
 
@@ -1270,6 +1295,7 @@ int wxApp::GetComCtl32Version()
     }
 
     return s_verComCtl32;
     }
 
     return s_verComCtl32;
+#endif
 }
 
 void wxExit()
 }
 
 void wxExit()