X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..b704229ee25ef8e5765ec09e9c164f59063564e8:/src/msw/bmpbuttn.cpp diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index 22234319d3..1d0e976dc3 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -172,21 +172,34 @@ bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) } BOOL ok; + + // no MaskBlt() under Win16 +#ifdef __WIN32__ wxMask *mask = bitmap->GetMask(); if ( mask ) { // the fg ROP is applied for the pixels of the mask bitmap which are 1 // (for a wxMask this means that this is a non transparent pixel), the // bg ROP is applied for all the others + + wxColour colBg = GetBackgroundColour(); + HBRUSH hbrBackground = + ::CreateSolidBrush(RGB(colBg.Red(), colBg.Green(), colBg.Blue())); + HBRUSH hbrOld = (HBRUSH)::SelectObject(hDC, hbrBackground); + ok = ::MaskBlt( hDC, x1, y1, wBmp, hBmp, // dst memDC, 0, 0, // src (HBITMAP)mask->GetMaskBitmap(), 0, 0, // mask MAKEROP4(SRCCOPY, // fg ROP - SRCPAINT) // bg ROP + PATCOPY) // bg ROP ); + + ::SelectObject(hDC, hbrOld); + ::DeleteObject(hbrBackground); } else +#endif // Win32 { ok = ::BitBlt(hDC, x1, y1, wBmp, hBmp, // dst memDC, 0, 0, // src