]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dcmemory.cpp
wxFileConfig ctor now (again) uses the files in the correct locations if the
[wxWidgets.git] / src / msw / dcmemory.cpp
index 42e0a0b97a8f28ae83df60bc957f8c79b5a0f4ee..243861faccdde23dcc5285dce3dbb6b02ffd209a 100644 (file)
@@ -84,8 +84,19 @@ void wxMemoryDC::SelectObject(const wxBitmap& bitmap)
     wxFatalError("Error in wxMemoryDC::SelectObject\nBitmap is selected in another wxMemoryDC.\nDelete the first wxMemoryDC or use SelectObject(NULL)");
     return;
   }
-  
-  m_selectedBitmap = bitmap;
+
+  // Check if the bitmap has the correct depth for this device context
+  if (bitmap.Ok() && (bitmap.GetDepth() != GetDepth()))
+  {
+      // Make a new bitmap that has the correct depth.
+      wxBitmap newBitmap = bitmap.GetBitmapForDC(* this);
+
+      m_selectedBitmap = newBitmap ;
+  }
+  else
+  {
+      m_selectedBitmap = bitmap;
+  }
 
   if (!m_selectedBitmap.Ok())
     return;
@@ -94,7 +105,7 @@ void wxMemoryDC::SelectObject(const wxBitmap& bitmap)
 #if WXDEBUG > 1
   wxDebugMsg("wxMemoryDC::SelectObject: Selecting HBITMAP %X\n", m_selectedBitmap.GetHBITMAP());
 #endif
-  HBITMAP bm = ::SelectObject((HDC) m_hDC, (HBITMAP) m_selectedBitmap.GetHBITMAP());
+  HBITMAP bm = (HBITMAP) ::SelectObject((HDC) m_hDC, (HBITMAP) m_selectedBitmap.GetHBITMAP());
 
   if (bm == ERROR)
   {