Commit 58c04daf authored by Rolf Kalbermatter's avatar Rolf Kalbermatter Committed by Alexandre Julliard

Change the return value for ExtractIconEx from HICON to UINT and make

the function call directly user32.PrivateExtractIconEx.
parent 2dcb751a
......@@ -397,7 +397,7 @@ INT WINAPI Shell_GetCachedImageIndexAW(LPCVOID szPath, INT nIndex, BOOL bSimulat
/*************************************************************************
* ExtractIconEx [SHELL32.@]
*/
HICON WINAPI ExtractIconExAW ( LPCVOID lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
UINT WINAPI ExtractIconExAW(LPCVOID lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons)
{ if (SHELL_OsIsUnicode())
return ExtractIconExW ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
return ExtractIconExA ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
......@@ -407,48 +407,22 @@ HICON WINAPI ExtractIconExAW ( LPCVOID lpszFile, INT nIconIndex, HICON * phiconL
* ExtractIconExW [SHELL32.@]
* RETURNS:
* 0 no icon found
* 1 file is not valid
* HICON handle of a icon (phiconLarge/Small == NULL)
* -1 file is not valid
* or number of icons extracted
*/
HICON WINAPI ExtractIconExW( LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons)
{
HICON ret = 0;
TRACE("%s %i %p %p %i\n", debugstr_w(lpszFile), nIconIndex, phiconLarge, phiconSmall, nIcons);
if (phiconLarge && !phiconSmall && nIconIndex == -1) /* Number of icons requested */
return (HICON)PrivateExtractIconsW(lpszFile, 0, 0, 0, NULL, NULL, 0, 0);
if (phiconLarge)
{
ret = (HICON)PrivateExtractIconsW(lpszFile, nIconIndex, 32, 32, phiconLarge, NULL, nIcons, 0);
if (nIcons==1)
{
ret = phiconLarge[0];
}
}
/* if no pointers given and one icon expected, return the handle directly */
if (!phiconLarge && !phiconSmall && nIcons==1)
phiconSmall = &ret;
if (phiconSmall)
{
ret = (HICON)PrivateExtractIconsW(lpszFile, nIconIndex, 16, 16, phiconSmall, NULL, nIcons, 0);
if (nIcons==1)
{
ret = phiconSmall[0];
}
}
return ret;
TRACE("%s %i %p %p %i\n", debugstr_w(lpszFile), nIconIndex, phiconLarge, phiconSmall, nIcons);
return PrivateExtractIconExW(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
}
/*************************************************************************
* ExtractIconExA [SHELL32.@]
*/
HICON WINAPI ExtractIconExA(LPCSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
UINT WINAPI ExtractIconExA(LPCSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons)
{
HICON ret;
UINT ret;
INT len = MultiByteToWideChar(CP_ACP, 0, lpszFile, -1, NULL, 0);
LPWSTR lpwstrFile = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
......
......@@ -273,10 +273,10 @@ HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPWSTR,LPWORD);
HICON WINAPI ExtractAssociatedIconExA(HINSTANCE,LPSTR,LPWORD,LPWORD);
HICON WINAPI ExtractAssociatedIconExW(HINSTANCE,LPWSTR,LPWORD,LPWORD);
#define ExtractAssociatedIconEx WINELIB_NAME_AW(ExtractAssociatedIconEx)
HICON WINAPI ExtractIconExA( LPCSTR, INT, HICON *, HICON *, UINT );
HICON WINAPI ExtractIconExW( LPCWSTR, INT, HICON *, HICON *, UINT );
UINT WINAPI ExtractIconExA(LPCSTR,INT,HICON*,HICON*,UINT);
UINT WINAPI ExtractIconExW(LPCWSTR,INT,HICON*,HICON*,UINT);
#define ExtractIconEx WINELIB_NAME_AW(ExtractIconEx)
HICON WINAPI ExtractIconExAW(LPCVOID, INT, HICON *, HICON *, UINT );
UINT WINAPI ExtractIconExAW(LPCVOID,INT,HICON*,HICON*,UINT);
HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
#define FindExecutable WINELIB_NAME_AW(FindExecutable)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment