Reactos

[USER32][APITESTS] Use the correct user32 icon resource ids (#7807)

authored by

Whindmar Saksit and committed by
GitHub
c0ea1c0e 2a901a72

+65 -13
+1 -5
modules/rostests/apitests/comctl32/imagelist.c
··· 48 48 HINSTANCE hInst = LoadLibraryW(L"USER32"); 49 49 if (!hInst) 50 50 return FALSE; 51 - HICON hIco = (HICON)LoadImage(hInst, MAKEINTRESOURCE(100), /* Windows */ 51 + HICON hIco = (HICON)LoadImage(hInst, MAKEINTRESOURCE(100), 52 52 IMAGE_ICON, IL_IMGSIZE, IL_IMGSIZE, 0); 53 - if (!hIco) 54 - hIco = (HICON)LoadImage(hInst, MAKEINTRESOURCE(32512), /* ReactOS */ 55 - IMAGE_ICON, IL_IMGSIZE, IL_IMGSIZE, 0); 56 - 57 53 if (hIco) 58 54 { 59 55 idx = ImageList_AddIcon(himl, hIco);
+38
modules/rostests/apitests/user32/LoadImage.c
··· 45 45 } 46 46 } 47 47 48 + static void test_LoadIcon_SystemIds(void) 49 + { 50 + static const WORD icomap[][2] = { 51 + { 100, (WORD)(SIZE_T)IDI_APPLICATION }, 52 + { 101, (WORD)(SIZE_T)IDI_WARNING }, 53 + { 102, (WORD)(SIZE_T)IDI_QUESTION }, 54 + { 103, (WORD)(SIZE_T)IDI_ERROR }, 55 + { 104, (WORD)(SIZE_T)IDI_INFORMATION }, 56 + { 105, (WORD)(SIZE_T)IDI_WINLOGO } 57 + }; 58 + HINSTANCE hInst = GetModuleHandleW(L"USER32"); 59 + typedef BOOL (WINAPI*SHAIE)(HICON, HICON); 60 + SHAIE pfnSHAreIconsEqual; 61 + HMODULE hSHLWAPI = LoadLibraryA("SHLWAPI"); 62 + if (!hSHLWAPI) 63 + { 64 + skip("Could not initialize\n"); 65 + return; 66 + } 67 + pfnSHAreIconsEqual = (SHAIE)GetProcAddress(hSHLWAPI, MAKEINTRESOURCEA(548)); 68 + if (!pfnSHAreIconsEqual) 69 + { 70 + FreeLibrary(hSHLWAPI); 71 + skip("Could not initialize\n"); 72 + return; 73 + } 74 + 75 + for (UINT i = 0; i < _countof(icomap); i++) 76 + { 77 + HICON hIcoRes = LoadIconW(hInst, MAKEINTRESOURCEW(icomap[i][0])); 78 + HICON hIcoSys = LoadIconW(NULL, MAKEINTRESOURCEW(icomap[i][1])); 79 + ok(hIcoRes && pfnSHAreIconsEqual(hIcoRes, hIcoSys), "SysIcon %d must be resource %d\n", icomap[i][1], icomap[i][0]); 80 + } 81 + FreeLibrary(hSHLWAPI); 82 + } 83 + 48 84 START_TEST(LoadImage) 49 85 { 50 86 char path[MAX_PATH]; ··· 133 169 si.cb = sizeof(si); 134 170 CreateProcessA( NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi ); 135 171 WaitForSingleObject (pi.hProcess, INFINITE); 172 + 173 + test_LoadIcon_SystemIds(); 136 174 }
+1 -1
win32ss/user/ntuser/callback.c
··· 1144 1144 IntLoadSystenIcons(Common->hIconBang, OIC_BANG); 1145 1145 IntLoadSystenIcons(Common->hIconNote, OIC_NOTE); 1146 1146 IntLoadSystenIcons(gpsi->hIconWindows, OIC_WINLOGO); 1147 - IntLoadSystenIcons(gpsi->hIconSmWindows, OIC_WINLOGO+1); 1147 + IntLoadSystenIcons(gpsi->hIconSmWindows, OIC_INTERNAL_WINSMALL); 1148 1148 1149 1149 ERR("hIconSmWindows %p hIconWindows %p \n",gpsi->hIconSmWindows,gpsi->hIconWindows); 1150 1150
+1 -1
win32ss/user/ntuser/cursoricon.c
··· 155 155 return; 156 156 157 157 // Set Small Window Icon and do not link. 158 - if ( id == OIC_WINLOGO+1 ) 158 + if ( id == OIC_INTERNAL_WINSMALL ) 159 159 { 160 160 pcur->CURSORF_flags |= CURSORF_GLOBAL; 161 161 UserReferenceObject(pcur);
+2
win32ss/user/ntuser/cursoricon.h
··· 108 108 #define ROIC_BANG 3 109 109 #define ROIC_NOTE 4 110 110 #define ROIC_WINLOGO 5 111 + #define ROIC_SHIELD 6 112 + #define OIC_INTERNAL_WINSMALL 6 /* Note: This needs to change if SHIELD is added to gasysico. */ 111 113 112 114 #define ROCR_ARROW 0 113 115 #define ROCR_IBEAM 1
+7 -6
win32ss/user/user32/user32.rc
··· 55 55 56 56 /* Icons */ 57 57 58 - OIC_SAMPLE ICON "resources/oic_sample.ico" 59 - OIC_HAND ICON "resources/oic_hand.ico" 60 - OIC_QUES ICON "resources/oic_ques.ico" 61 - OIC_BANG ICON "resources/oic_bang.ico" 62 - OIC_NOTE ICON "resources/oic_note.ico" 63 - OIC_WINLOGO ICON "resources/oic_reactos.ico" 58 + 100 ICON "resources/oic_sample.ico" /* IDI_APPLICATION */ 59 + 101 ICON "resources/oic_bang.ico" /* IDI_WARNING */ 60 + 102 ICON "resources/oic_ques.ico" /* IDI_QUESTION */ 61 + 103 ICON "resources/oic_hand.ico" /* IDI_ERROR */ 62 + 104 ICON "resources/oic_note.ico" /* IDI_INFORMATION */ 63 + 105 ICON "resources/oic_reactos.ico" /* IDI_WINLOGO */ 64 + /* 106 ICON "resources/oic_shield.ico" IDI_SHIELD */ 64 65 65 66 /* Bitmaps */ 66 67
+15
win32ss/user/user32/windows/cursoricon.c
··· 1738 1738 1739 1739 /* Check if caller wants OEM icons */ 1740 1740 if(!hinst) 1741 + { 1742 + #ifndef IDI_SHIELD 1743 + #define IDI_SHIELD MAKEINTRESOURCE(32518) 1744 + #endif 1745 + 1741 1746 hinst = User32Instance; 1747 + 1748 + /* Map IDI to resource id */ 1749 + if (bIcon && lpszName >= IDI_APPLICATION && lpszName <= IDI_SHIELD) 1750 + { 1751 + SIZE_T id = 100 + (SIZE_T)lpszName - (SIZE_T)IDI_APPLICATION; 1752 + if ((id | 2) == 103) 1753 + id ^= 2; /* Must swap IDI_ERROR and IDI_WARNING */ 1754 + lpszName = MAKEINTRESOURCEW(id); 1755 + } 1756 + } 1742 1757 1743 1758 if(lpszName) 1744 1759 {