From 550e53b6bb685e806ccce392c6c6acb52cd17a2d Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 12 Feb 2013 13:56:41 +0100 Subject: [PATCH] user32: Prefer loading color cursors in LoadImage. --- dlls/user32/cursoricon.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index 5b21101ec45..df11f56f00a 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -2619,6 +2619,8 @@ HANDLE WINAPI LoadImageA( HINSTANCE hinst, LPCSTR name, UINT type, HANDLE WINAPI LoadImageW( HINSTANCE hinst, LPCWSTR name, UINT type, INT desiredx, INT desiredy, UINT loadflags ) { + int depth; + TRACE_(resource)("(%p,%s,%d,%d,%d,0x%08x)\n", hinst,debugstr_w(name),type,desiredx,desiredy,loadflags); @@ -2628,18 +2630,14 @@ HANDLE WINAPI LoadImageW( HINSTANCE hinst, LPCWSTR name, UINT type, return BITMAP_Load( hinst, name, desiredx, desiredy, loadflags ); case IMAGE_ICON: - if (!screen_dc) screen_dc = CreateDCW( DISPLAYW, NULL, NULL, NULL ); - if (screen_dc) - { - return CURSORICON_Load(hinst, name, desiredx, desiredy, - GetDeviceCaps(screen_dc, BITSPIXEL), - FALSE, loadflags); - } - break; - case IMAGE_CURSOR: - return CURSORICON_Load(hinst, name, desiredx, desiredy, - 1, TRUE, loadflags); + depth = 1; + if (!(loadflags & LR_MONOCHROME)) + { + if (!screen_dc) screen_dc = CreateDCW( DISPLAYW, NULL, NULL, NULL ); + if (screen_dc) depth = GetDeviceCaps( screen_dc, BITSPIXEL ); + } + return CURSORICON_Load(hinst, name, desiredx, desiredy, depth, (type == IMAGE_CURSOR), loadflags); } return 0; }