X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a3bf7524f394af039efe196a186f7969cbabcc19..56b9925b116dfa58028fccb2556852f2da2ab9ac:/src/msw/bitmap.cpp diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp index 0e5ab48c9f..ad7929de21 100644 --- a/src/msw/bitmap.cpp +++ b/src/msw/bitmap.cpp @@ -520,10 +520,6 @@ bool wxBitmap::DoCreate(int w, int h, int d, WXHDC hdc) else // create a DDB #endif { - if ( d == -1 ) - d = wxDisplayDepth(); - - GetBitmapData()->m_depth = d; #ifndef __WXMICROWIN__ if ( d > 0 ) @@ -1510,20 +1506,20 @@ void wxBitmap::UngetRawData(wxPixelDataBase& dataBase) p = rowStart; p.OffsetY(data, 1); } + } - // if we're a DDB we need to convert DIB back to DDB now to make the - // changes made via raw bitmap access effective - if ( !GetBitmapData()->m_isDIB ) - { - wxDIB *dib = GetBitmapData()->m_dib; - GetBitmapData()->m_dib = NULL; + // if we're a DDB we need to convert DIB back to DDB now to make the + // changes made via raw bitmap access effective + if ( !GetBitmapData()->m_isDIB ) + { + wxDIB *dib = GetBitmapData()->m_dib; + GetBitmapData()->m_dib = NULL; - // TODO: convert + // TODO: convert - delete dib; - } + delete dib; } -#endif +#endif // wxUSE_WXDIB } #endif // #ifdef wxHAVE_RAW_BITMAP @@ -1762,14 +1758,11 @@ bool wxCreateDIB(long xSize, long ySize, long bitsPerPixel, HPALETTE hPal, LPBITMAPINFO* lpDIBHeader) { unsigned long i, headerSize; - LPBITMAPINFO lpDIBheader = NULL; - LPPALETTEENTRY lpPe = NULL; - // Allocate space for a DIB header headerSize = (sizeof(BITMAPINFOHEADER) + (256 * sizeof(PALETTEENTRY))); - lpDIBheader = (BITMAPINFO *) malloc(headerSize); - lpPe = (PALETTEENTRY *)((BYTE*)lpDIBheader + sizeof(BITMAPINFOHEADER)); + LPBITMAPINFO lpDIBheader = (BITMAPINFO *) malloc(headerSize); + LPPALETTEENTRY lpPe = (PALETTEENTRY *)((BYTE*)lpDIBheader + sizeof(BITMAPINFOHEADER)); GetPaletteEntries(hPal, 0, 256, lpPe); @@ -1910,8 +1903,8 @@ HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h) wxLogLastError(wxT("CreateBitmap")); } - ::SelectObject(hdcSrc, hbmpMask); - ::SelectObject(hdcDst, hbmpInvMask); + HGDIOBJ srcTmp = ::SelectObject(hdcSrc, hbmpMask); + HGDIOBJ dstTmp = ::SelectObject(hdcDst, hbmpInvMask); if ( !::BitBlt(hdcDst, 0, 0, w, h, hdcSrc, 0, 0, NOTSRCCOPY) ) @@ -1919,6 +1912,10 @@ HBITMAP wxInvertMask(HBITMAP hbmpMask, int w, int h) wxLogLastError(wxT("BitBlt")); } + // Deselect objects + SelectObject(hdcSrc,srcTmp); + SelectObject(hdcDst,dstTmp); + ::DeleteDC(hdcSrc); ::DeleteDC(hdcDst);