I thought this one was fixed?
WBR, Aleksey.
On Oct 30, 2008, at 9:15 PM, cfinck@svn.reactos.org wrote:
Author: cfinck Date: Thu Oct 30 13:15:00 2008 New Revision: 37104
URL: http://svn.reactos.org/svn/reactos?rev=37104&view=rev Log: Hack: Copy the toolbar image on our own instead of using CopyImage to hackfix the messed up toolbar graphics as it was done for previous releases.
Modified: branches/ros-branch-0_3_7/reactos/dll/win32/comctl32/toolbar.c
Modified: branches/ros-branch-0_3_7/reactos/dll/win32/comctl32/ toolbar.c URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_7/ reactos/dll/win32/comctl32/toolbar.c? rev=37104&r1=37103&r2=37104&view=diff ====================================================================== ======== --- branches/ros-branch-0_3_7/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] (original) +++ branches/ros-branch-0_3_7/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] Thu Oct 30 13:15:00 2008 @@ -2665,7 +2665,33 @@ TRACE("adding hInst=%p nID=%d nButtons=%d\n", bitmap->hInst, bitmap->nID, bitmap->nButtons); /* Add bitmaps to the default image list */ if (bitmap->hInst == NULL) /* a handle was passed */
hbmLoad = (HBITMAP)CopyImage(ULongToHandle(bitmap->nID),IMAGE_BITMAP, 0, 0, 0);
- {
BITMAP bmp;HBITMAP hOldBitmapBitmap, hOldBitmapLoad;HDC hdcImage, hdcBitmap;/* copy the bitmap before adding it so that the user's bitmap* doesn't get modified.*/GetObjectW ((HBITMAP)bitmap->nID, sizeof(BITMAP), (LPVOID)&bmp);
hdcImage = CreateCompatibleDC(0);hdcBitmap = CreateCompatibleDC(0);/* create new bitmap */hbmLoad = CreateBitmap (bmp.bmWidth, bmp.bmHeight,bmp.bmPlanes, bmp.bmBitsPixel, NULL);
hOldBitmapBitmap = SelectObject(hdcBitmap, (HBITMAP)bitmap-nID);
hOldBitmapLoad = SelectObject(hdcImage, hbmLoad);/* Copy the user's image */BitBlt (hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight,hdcBitmap, 0, 0, SRCCOPY);SelectObject (hdcImage, hOldBitmapLoad);SelectObject (hdcBitmap, hOldBitmapBitmap);DeleteDC (hdcImage);DeleteDC (hdcBitmap);- } else hbmLoad = CreateMappedBitmap(bitmap->hInst, bitmap->nID,
0, NULL, 0);
The main issue is fixed indeed, but several win32k blt/blend functions have problems with one of the two possible 16 Bit pixel formats. This can be seen in VMWare taskbar icons in 16 Bit. Bitblt seems to handle them correctly - so the copyimage hack works around this remaining bug. See latest comments in bug #2225 for more info about this.
Best regards Gregor Schneider