user32: Fix color mask handling in CreateIconIndirect.
This commit is contained in:
parent
7ae21483ec
commit
075a1e0e4d
|
@ -2218,24 +2218,24 @@ HICON WINAPI CreateIconIndirect(PICONINFO iconinfo)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HDC hdc, hdc_mem;
|
HDC hdc_mem, hdc_mem2;
|
||||||
HBITMAP hbmp_old, hbmp_mem_old, hbmp_mono;
|
HBITMAP hbmp_mem_old, hbmp_mem2_old, hbmp_mono;
|
||||||
|
|
||||||
hdc = GetDC( 0 );
|
hdc_mem = CreateCompatibleDC( 0 );
|
||||||
hdc_mem = CreateCompatibleDC( hdc );
|
hdc_mem2 = CreateCompatibleDC( 0 );
|
||||||
|
|
||||||
hbmp_mono = CreateBitmap( bmpAnd.bmWidth, bmpAnd.bmHeight, 1, 1, NULL );
|
hbmp_mono = CreateBitmap( bmpAnd.bmWidth, bmpAnd.bmHeight, 1, 1, NULL );
|
||||||
|
|
||||||
hbmp_old = SelectObject( hdc, iconinfo->hbmMask );
|
hbmp_mem_old = SelectObject( hdc_mem, iconinfo->hbmMask );
|
||||||
hbmp_mem_old = SelectObject( hdc_mem, hbmp_mono );
|
hbmp_mem2_old = SelectObject( hdc_mem2, hbmp_mono );
|
||||||
|
|
||||||
BitBlt( hdc_mem, 0, 0, bmpAnd.bmWidth, bmpAnd.bmHeight, hdc, 0, 0, SRCCOPY );
|
BitBlt( hdc_mem2, 0, 0, bmpAnd.bmWidth, bmpAnd.bmHeight, hdc_mem, 0, 0, SRCCOPY );
|
||||||
|
|
||||||
SelectObject( hdc, hbmp_old );
|
|
||||||
SelectObject( hdc_mem, hbmp_mem_old );
|
SelectObject( hdc_mem, hbmp_mem_old );
|
||||||
|
SelectObject( hdc_mem2, hbmp_mem2_old );
|
||||||
|
|
||||||
DeleteDC( hdc_mem );
|
DeleteDC( hdc_mem );
|
||||||
ReleaseDC( 0, hdc );
|
DeleteDC( hdc_mem2 );
|
||||||
|
|
||||||
GetBitmapBits( hbmp_mono, sizeAnd, info + 1 );
|
GetBitmapBits( hbmp_mono, sizeAnd, info + 1 );
|
||||||
DeleteObject( hbmp_mono );
|
DeleteObject( hbmp_mono );
|
||||||
|
|
Loading…
Reference in New Issue