mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
DisplayIcon needs to validate the result and support icon index (#5664)
Test: @echo off reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex1 /v DisplayName /d "Ex1 Normal" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex1 /v DisplayIcon /d "%windir%\explorer.exe" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex1 /v UnstallString /d "calc.exe" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex2 /v DisplayName /d "Ex2 Bad icon path" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex2 /v DisplayIcon /d "%windir%\DoesNotExist.exe" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex2 /v UnstallString /d "calc.exe" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex3 /v DisplayName /d "Ex3 Resource index" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex3 /v DisplayIcon /d "%windir%\explorer.exe,4" /f reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ex3 /v UnstallString /d "calc.exe" /f start appwiz.cpl
This commit is contained in:
parent
5a0cd3743e
commit
32bdd85b7f
1 changed files with 5 additions and 6 deletions
|
@ -1289,14 +1289,13 @@ CAppsListView::AddApplication(CAppInfo *AppInfo, BOOL InitialCheckState)
|
|||
/* Load icon from registry */
|
||||
HICON hIcon = NULL;
|
||||
CStringW szIconPath;
|
||||
int IconIndex;
|
||||
if (AppInfo->RetrieveIcon(szIconPath))
|
||||
{
|
||||
PathParseIconLocationW((LPWSTR)szIconPath.GetString());
|
||||
IconIndex = PathParseIconLocationW(szIconPath.GetBuffer());
|
||||
szIconPath.ReleaseBuffer();
|
||||
|
||||
/* Load only the 1st icon from the application executable,
|
||||
* because all apps provide the executables which have the main icon
|
||||
* as 1st in the index , so we don't need other icons here */
|
||||
hIcon = ExtractIconW(hInst, szIconPath.GetString(), 0);
|
||||
ExtractIconExW(szIconPath.GetString(), IconIndex, &hIcon, NULL, 1);
|
||||
}
|
||||
|
||||
/* Use the default icon if none were found in the file, or if it is not supported (returned 1) */
|
||||
|
@ -1306,7 +1305,7 @@ CAppsListView::AddApplication(CAppInfo *AppInfo, BOOL InitialCheckState)
|
|||
hIcon = LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN));
|
||||
}
|
||||
|
||||
int IconIndex = ImageList_AddIcon(m_hImageListView, hIcon);
|
||||
IconIndex = ImageList_AddIcon(m_hImageListView, hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
int Index = AddItem(ItemCount, IconIndex, AppInfo->szDisplayName, (LPARAM)AppInfo);
|
||||
|
|
Loading…
Reference in a new issue