diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index 43b7f0027d6..39e943dcd11 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -1907,6 +1907,19 @@ ImageList_LoadImageW (HINSTANCE hi, LPCWSTR lpbmp, INT cx, INT cGrow, if (uType == IMAGE_BITMAP) { BITMAP bmp; GetObjectA (handle, sizeof(BITMAP), &bmp); + + /* To match windows behavior, if cx is set to zero and + the flag DI_DEFAULTSIZE is specified, cx becomes the + system metric value for icons. If the flag is not specified + the function sets the size to the height of the bitmap */ + if (cx == 0) + { + if (uFlags & DI_DEFAULTSIZE) + cx = GetSystemMetrics (SM_CXICON); + else + cx = bmp.bmHeight; + } + nImageCount = bmp.bmWidth / cx; himl = ImageList_Create (cx, bmp.bmHeight, ILC_MASK | ILC_COLOR,