[ros-diffs] [cfinck] 34115: Hack: Copy the toolbar image on our own instead of using CopyImage to solve the messed up toolbar graphics. See r31924 for more details
cfinck at svn.reactos.org
cfinck at svn.reactos.org
Fri Jun 27 00:03:34 CEST 2008
Author: cfinck
Date: Thu Jun 26 17:03:33 2008
New Revision: 34115
URL: http://svn.reactos.org/svn/reactos?rev=34115&view=rev
Log:
Hack: Copy the toolbar image on our own instead of using CopyImage to solve the messed up toolbar graphics.
See r31924 for more details
Modified:
branches/ros-branch-0_3_5/reactos/dll/win32/comctl32/toolbar.c
Modified: branches/ros-branch-0_3_5/reactos/dll/win32/comctl32/toolbar.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_5/reactos/dll/win32/comctl32/toolbar.c?rev=34115&r1=34114&r2=34115&view=diff
==============================================================================
--- branches/ros-branch-0_3_5/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] (original)
+++ branches/ros-branch-0_3_5/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] Thu Jun 26 17:03:33 2008
@@ -2666,7 +2666,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