fixed incorrect calls to SelectObject(hdc, NULL)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -111,21 +111,20 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bmp)
|
||||
iconInfo.hbmMask = wxInvertMask((HBITMAP)mask->GetMaskBitmap());
|
||||
iconInfo.hbmColor = GetHbitmapOf(bmp);
|
||||
|
||||
/* GRG: black out the transparent area to preserve background
|
||||
* colour, because Windows blits the original bitmap using
|
||||
* SRCINVERT (XOR) after applying the mask to the dest rect.
|
||||
*/
|
||||
HDC dcSrc = ::CreateCompatibleDC(NULL);
|
||||
HDC dcDst = ::CreateCompatibleDC(NULL);
|
||||
SelectObject(dcSrc, (HBITMAP)mask->GetMaskBitmap());
|
||||
SelectObject(dcDst, iconInfo.hbmColor);
|
||||
// black out the transparent area to preserve background colour, because
|
||||
// Windows blits the original bitmap using SRCINVERT (XOR) after applying
|
||||
// the mask to the dest rect.
|
||||
{
|
||||
MemoryHDC dcSrc, dcDst;
|
||||
SelectInHDC selectMask(dcSrc, (HBITMAP)mask->GetMaskBitmap()),
|
||||
selectBitmap(dcDst, iconInfo.hbmColor);
|
||||
|
||||
BitBlt(dcDst, 0, 0, bmp.GetWidth(), bmp.GetHeight(), dcSrc, 0, 0, SRCAND);
|
||||
|
||||
SelectObject(dcDst, NULL);
|
||||
SelectObject(dcSrc, NULL);
|
||||
DeleteDC(dcDst);
|
||||
DeleteDC(dcSrc);
|
||||
if ( !::BitBlt(dcDst, 0, 0, bmp.GetWidth(), bmp.GetHeight(),
|
||||
dcSrc, 0, 0, SRCAND) )
|
||||
{
|
||||
wxLogLastError(_T("BitBlt"));
|
||||
}
|
||||
}
|
||||
|
||||
HICON hicon = ::CreateIconIndirect(&iconInfo);
|
||||
if ( !hicon )
|
||||
|
Reference in New Issue
Block a user