X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e22c13fe7ed64b4a7cb68ef42b338b6805f9fc64..3ffbc733a20ffbda22abece30b4a1afb5c8bc75d:/src/msw/dc.cpp diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 23c3da77ec..e1b2d6966f 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -49,7 +49,7 @@ #include "wx/msw/private.h" // needs to be before #include -#if wxUSE_COMMON_DIALOGS +#if wxUSE_COMMON_DIALOGS && !defined(__WXMICROWIN__) #include #endif @@ -886,7 +886,6 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask useMask = FALSE; } } - if ( useMask ) { #ifdef __WIN32__ @@ -902,13 +901,12 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask { HDC cdc = GetHdc(); HDC hdcMem = ::CreateCompatibleDC(GetHdc()); - ::SelectObject(hdcMem, GetHbitmapOf(bmp)); - + HGDIOBJ hOldBitmap = ::SelectObject(hdcMem, GetHbitmapOf(bmp)); #if wxUSE_PALETTE wxPalette *pal = bmp.GetPalette(); if ( pal && ::GetDeviceCaps(cdc,BITSPIXEL) <= 8 ) { - oldPal = ::SelectPalette( hdcMem, GetHpalette(pal), FALSE); + oldPal = ::SelectPalette(hdcMem, GetHpaletteOf(pal), FALSE); ::RealizePalette(hdcMem); } #endif // wxUSE_PALETTE @@ -923,6 +921,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ::SelectPalette(hdcMem, oldPal, FALSE); #endif // wxUSE_PALETTE + ::SelectObject(hdcMem, hOldBitmap); ::DeleteDC(hdcMem); } @@ -959,15 +958,15 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask } #if wxUSE_PALETTE - wxPalette *pal = bmp.GetPalette(); - if ( pal && ::GetDeviceCaps(cdc,BITSPIXEL) <= 8 ) - { - oldPal = ::SelectPalette( hdcMem, GetHpalette(pal), FALSE); - ::RealizePalette(hdcMem); - } + wxPalette *pal = bmp.GetPalette(); + if ( pal && ::GetDeviceCaps(cdc,BITSPIXEL) <= 8 ) + { + oldPal = ::SelectPalette(memdc, GetHpaletteOf(pal), FALSE); + ::RealizePalette(memdc); + } #endif // wxUSE_PALETTE - ::SelectObject( memdc, hbitmap ); + HGDIOBJ hOldBitmap = ::SelectObject( memdc, hbitmap ); ::BitBlt( cdc, x, y, width, height, memdc, 0, 0, SRCCOPY); #if wxUSE_PALETTE @@ -975,6 +974,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask ::SelectPalette(memdc, oldPal, FALSE); #endif // wxUSE_PALETTE + ::SelectObject( memdc, hOldBitmap ); ::DeleteDC( memdc ); ::SetTextColor(GetHdc(), old_textground); @@ -1249,12 +1249,12 @@ void wxDC::SetBrush(const wxBrush& brush) if ( stipple && stipple->Ok() ) { #ifdef __WIN32__ - ::SetBrushOrgEx(GetHdc(), + ::SetBrushOrgEx(GetHdc(), m_deviceOriginX % stipple->GetWidth(), m_deviceOriginY % stipple->GetHeight(), NULL); // don't need previous brush origin #else - ::SetBrushOrg(GetHdc(), + ::SetBrushOrg(GetHdc(), m_deviceOriginX % stipple->GetWidth(), m_deviceOriginY % stipple->GetHeight()); #endif @@ -1325,14 +1325,6 @@ void wxDC::SetBackgroundMode(int mode) // SetBackgroundColour now only refers to text background // and m_backgroundMode is used there - -/* - if (m_backgroundMode == wxTRANSPARENT) - ::SetBkMode(GetHdc(), TRANSPARENT); - else - ::SetBkMode(GetHdc(), OPAQUE); - Last change: AC 29 Jan 101 8:54 pm -*/ } void wxDC::SetLogicalFunction(int function) @@ -1435,13 +1427,13 @@ void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y, #ifdef __WXMICROWIN__ if (!GetHDC()) { - if (x) *x = 0; - if (y) *y = 0; - if (descent) *descent = 0; - if (externalLeading) *externalLeading = 0; - return; + if (x) *x = 0; + if (y) *y = 0; + if (descent) *descent = 0; + if (externalLeading) *externalLeading = 0; + return; } -#endif +#endif // __WXMICROWIN__ HFONT hfontOld; if ( font ) @@ -1769,8 +1761,8 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, dc_buffer = ::CreateCompatibleDC(GetHdc()); buffer_bmap = ::CreateCompatibleBitmap(GetHdc(), width, height); #endif // wxUSE_DC_CACHEING/!wxUSE_DC_CACHEING - ::SelectObject(dc_mask, (HBITMAP) mask->GetMaskBitmap()); - ::SelectObject(dc_buffer, buffer_bmap); + HGDIOBJ hOldMaskBitmap = ::SelectObject(dc_mask, (HBITMAP) mask->GetMaskBitmap()); + HGDIOBJ hOldBufferBitmap = ::SelectObject(dc_buffer, buffer_bmap); // copy dest to buffer if ( !::BitBlt(dc_buffer, 0, 0, (int)width, (int)height, @@ -1816,8 +1808,8 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, } // tidy up temporary DCs and bitmap - ::SelectObject(dc_mask, 0); - ::SelectObject(dc_buffer, 0); + ::SelectObject(dc_mask, hOldMaskBitmap); + ::SelectObject(dc_buffer, hOldBufferBitmap); #if !wxUSE_DC_CACHEING {