https://bugs.winehq.org/show_bug.cgi?id=47076
--- Comment #1 from nikolaysemenkov@gmail.com --- I checked the code more and found the clear difference in behavior on wine and windows in LoadImage. On windows call to LoadImage with LR_SHARED having resolution 0,0 returns the icon bitmap of previous call to LoadImage with LR_SHARED having resolution NOT 0,0 ie: LoadImage(HInstance, MAKEINTRESOURCE(iIconLarge), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR | LR_SHARED); LoadImage(HInstance, MAKEINTRESOURCE(iIconLarge), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR | LR_SHARED); HICON hIconTest = (HICON)LoadImage(HInstance, MAKEINTRESOURCE(iIconLarge), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_SHARED);
// Print the icon resolution: ICONINFO iconInfo; if (GetIconInfo(hIconTest, &iconInfo)) { BITMAP BMInf; GetObject(iconInfo.hbmColor, sizeof(BMInf), &BMInf); printf("xxxxxxxxxxxxxxx result: %d %d", BMInf.bmWidth, BMInf.bmHeight); }
Last call on windows returns the icon handle with sizes of 16x16 and on wine it is 32x32.
Even on windows result of LoadImage with LR_SHARED and resolution 0,0 looks unexpected because it returns the icon handle with bitmap of previously used resolution.