On October 13, 2002 12:57 pm, Carlos wrote:
> Changelog:
> * Changed SRCPAINT to SRCCOPY, the first time what
> it paints in hImageDC.
> } else if (himl->hbmMask) {
> BitBlt( hImageDC, 0, 0, cx, cy, hMaskListDC, lx, ly, SRCAND );
> - BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
> + if (!bIsTransparent && himl->hbmMask) {
> + BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
> + } else {
> + BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCCOPY );
> + }
This can not be right. It is equivalent to:
PatBlt( hImageDC, 0, 0, cx, cy, PATCOPY);
SelectObject(hImageDC, hOldBrush);
}
- } else if (himl->hbmMask) {
+ } else if (himl->hbmMask && !(fStyle & ILD_TRANSPARENT) && clrBk != CLR_NONE) {
BitBlt( hImageDC, 0, 0, cx, cy, hMaskListDC, lx, ly, SRCAND );
BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
} else {
/* the image is opaque, just copy it */
TRACE(" - Image is opaque\n");
BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCCOPY);
}
That is, if we have ILD_TRANSPARENT set, or clrBk == CLR_NONE, we go the
SRCCOPY route, ignoring the mask, which is just the opposite of what we
need to do!
Alexandre, please do not apply it.
--
Dimi.