[ros-diffs] [cfinck] 28349: Reapply the taskbar icon hackfix from r27734

cfinck at svn.reactos.org cfinck at svn.reactos.org
Wed Aug 15 16:46:00 CEST 2007


Author: cfinck
Date: Wed Aug 15 18:45:59 2007
New Revision: 28349

URL: http://svn.reactos.org/svn/reactos?rev=28349&view=rev
Log:
Reapply the taskbar icon hackfix from r27734

Modified:
    branches/ros-branch-0_3_3-new/reactos/dll/win32/comctl32/toolbar.c

Modified: branches/ros-branch-0_3_3-new/reactos/dll/win32/comctl32/toolbar.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_3-new/reactos/dll/win32/comctl32/toolbar.c?rev=28349&r1=28348&r2=28349&view=diff
==============================================================================
--- branches/ros-branch-0_3_3-new/reactos/dll/win32/comctl32/toolbar.c (original)
+++ branches/ros-branch-0_3_3-new/reactos/dll/win32/comctl32/toolbar.c Wed Aug 15 18:45:59 2007
@@ -2669,7 +2669,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);
 




More information about the Ros-diffs mailing list