X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2432b92dd7a837db13d3938a56c1959decd03203..9fea1a5d6282d0925c15fc21e33c6236febcdecf:/src/msw/dcmemory.cpp diff --git a/src/msw/dcmemory.cpp b/src/msw/dcmemory.cpp index f3de3b4b4a..03e89a1c91 100644 --- a/src/msw/dcmemory.cpp +++ b/src/msw/dcmemory.cpp @@ -24,9 +24,9 @@ #include "wx/utils.h" #endif -#include "wx/dcmemory.h" +#include "wx/msw/private.h" -#include +#include "wx/dcmemory.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC) @@ -39,12 +39,18 @@ IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC) wxMemoryDC::wxMemoryDC(void) { - m_hDC = (WXHDC) ::CreateCompatibleDC(NULL); + m_hDC = (WXHDC) ::CreateCompatibleDC((HDC) NULL); m_ok = (m_hDC != 0); m_bOwnsDC = TRUE; SetBrush(*wxWHITE_BRUSH); SetPen(*wxBLACK_PEN); + + // the background mode is only used for text background + // and is set in DrawText() to OPAQUE as required, other- + // wise always TRANSPARENT, RR + ::SetBkMode( GetHdc(), TRANSPARENT ); + } wxMemoryDC::wxMemoryDC(wxDC *old_dc) @@ -58,6 +64,12 @@ wxMemoryDC::wxMemoryDC(wxDC *old_dc) SetBrush(*wxWHITE_BRUSH); SetPen(*wxBLACK_PEN); + + // the background mode is only used for text background + // and is set in DrawText() to OPAQUE as required, other- + // wise always TRANSPARENT, RR + ::SetBkMode( GetHdc(), TRANSPARENT ); + } wxMemoryDC::~wxMemoryDC(void) @@ -81,7 +93,7 @@ void wxMemoryDC::SelectObject(const wxBitmap& bitmap) // a device context if (bitmap.GetSelectedInto() && (bitmap.GetSelectedInto() != this)) { - wxFatalError("Error in wxMemoryDC::SelectObject\nBitmap is selected in another wxMemoryDC.\nDelete the first wxMemoryDC or use SelectObject(NULL)"); + wxFatalError(_T("Error in wxMemoryDC::SelectObject\nBitmap is selected in another wxMemoryDC.\nDelete the first wxMemoryDC or use SelectObject(NULL)")); return; } @@ -90,17 +102,17 @@ void wxMemoryDC::SelectObject(const wxBitmap& bitmap) // JACS 11/12/98: disabling this since the Forty Thieves sample // shows this not working properly. In fact, if loading from a resource, // the depth should become the screen depth, so why was it being called? - if (0) - { - // Make a new bitmap that has the correct depth. - wxBitmap newBitmap = bitmap.GetBitmapForDC(* this); - - m_selectedBitmap = newBitmap ; - } - else - { +// if (0) +// { +// // 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; @@ -110,13 +122,13 @@ void wxMemoryDC::SelectObject(const wxBitmap& bitmap) if (bm == ERROR) { - wxFatalError("Error in wxMemoryDC::SelectObject\nBitmap may not be loaded, or may be selected in another wxMemoryDC.\nDelete the first wxMemoryDC to deselect bitmap."); + wxFatalError(_T("Error in wxMemoryDC::SelectObject\nBitmap may not be loaded, or may be selected in another wxMemoryDC.\nDelete the first wxMemoryDC to deselect bitmap.")); } else if (!m_oldBitmap) m_oldBitmap = (WXHBITMAP) bm; } -void wxMemoryDC::GetSize(int *width, int *height) const +void wxMemoryDC::DoGetSize(int *width, int *height) const { if (!m_selectedBitmap.Ok()) {