]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bitmap.cpp
In DialogEd, changed Close to Destroy to make it shut down properly.
[wxWidgets.git] / src / msw / bitmap.cpp
index 67d698f32b182c34b06d7bf358b8b965212f2a60..264bb3359e3953ae174108137812f7c38ca54d6c 100644 (file)
@@ -38,7 +38,7 @@
 
 #if wxUSE_XPM_IN_MSW
 #define FOR_MSW 1
-#include "../../contrib/wxxpm/libxpm.34b/lib/xpm34.h"
+#include "../src/xpm/xpm34.h"
 #endif
 
 #include "wx/msw/dib.h"
@@ -78,6 +78,7 @@ wxBitmapRefData::~wxBitmapRefData(void)
   if (m_bitmapMask)
     delete m_bitmapMask;
   m_bitmapMask = NULL;
+
 }
 
 wxList wxBitmap::sm_handlers;
@@ -170,7 +171,7 @@ wxBitmap::wxBitmap(const wxString& filename, long type)
 
 #if wxUSE_XPM_IN_MSW
 // Create from data
-wxBitmap::wxBitmap(const char **data, wxItem *WXUNUSED(anItem))
+wxBitmap::wxBitmap(char **data, wxItem *WXUNUSED(anItem))
 {
   (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
 }
@@ -394,6 +395,7 @@ wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
     LPBITMAPINFO    lpDib;
     void            *lpBits = NULL;
 
+/*
     wxASSERT( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) );
 
     tmpBitmap.SetPalette(this->GetPalette());
@@ -401,6 +403,23 @@ wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
     memDC.SetPalette(this->GetPalette());
 
     hPal = (HPALETTE) this->GetPalette()->GetHPALETTE();
+*/
+    if( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) )
+    {
+        tmpBitmap.SetPalette(* this->GetPalette());
+        memDC.SelectObject(tmpBitmap);
+        memDC.SetPalette(* this->GetPalette());
+        hPal = (HPALETTE) this->GetPalette()->GetHPALETTE();
+    }
+    else
+    {
+        hPal = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE);
+        wxPalette palette;
+        palette.SetHPALETTE( (WXHPALETTE)hPal );
+        tmpBitmap.SetPalette( palette );
+        memDC.SelectObject(tmpBitmap);
+        memDC.SetPalette( palette );
+    }
 
     // set the height negative because in a DIB the order of the lines is reversed
     createDIB(this->GetWidth(), -this->GetHeight(), this->GetDepth(), hPal, &lpDib);