]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/statbmp.cpp
removed extra semicolons added by previous patch (patch 1429906)
[wxWidgets.git] / src / msw / statbmp.cpp
index ca99580ab0c7cab4839ce06034890127cd604f7e..c321fe5f73c680ad9b7c27fbffe178b9c2b30908 100644 (file)
@@ -269,8 +269,16 @@ void wxStaticBitmap::SetImageNoCopy( wxGDIImage* image)
     LONG style = ::GetWindowLong( (HWND)GetHWND(), GWL_STYLE ) ;
     ::SetWindowLong( (HWND)GetHWND(), GWL_STYLE, ( style & ~( SS_BITMAP|SS_ICON ) ) |
                      ( m_isIcon ? SS_ICON : SS_BITMAP ) );
-    ::SendMessage(GetHwnd(), STM_SETIMAGE,
+    HGDIOBJ oldHandle = (HGDIOBJ)::SendMessage(GetHwnd(), STM_SETIMAGE,
                   m_isIcon ? IMAGE_ICON : IMAGE_BITMAP, (LPARAM)handle);
+    // detect if this is still the handle we passed before or
+    // if the static-control made a copy of the bitmap!
+    if (m_currentHandle != 0 && oldHandle != (HGDIOBJ) m_currentHandle)
+    {
+        // the static control made a copy and we are responsible for deleting it
+        DeleteObject((HGDIOBJ) oldHandle);      
+    }
+    m_currentHandle = (WXHANDLE)handle;                        
 #endif // Win32
 
     if ( ImageIsOk() )