From 8c449a58aa32cb89e24bb04d573be7b543433cda Mon Sep 17 00:00:00 2001 From: Juergen Schmied Date: Fri, 18 Dec 1998 14:45:07 +0000 Subject: [PATCH] SHGetFileInfo32A: get SHGFI_SYSICONINDEX implemented. --- dlls/shell32/shell32_main.c | 44 +++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c index ad42cdba381..d5ae39b15f1 100644 --- a/dlls/shell32/shell32_main.c +++ b/dlls/shell32/shell32_main.c @@ -104,20 +104,23 @@ void WINAPI Control_RunDLL( HWND32 hwnd, LPCVOID code, LPCSTR cmd, DWORD arg4 ) DWORD WINAPI SHGetFileInfo32A(LPCSTR path,DWORD dwFileAttributes, SHFILEINFO32A *psfi, UINT32 sizeofpsfi, UINT32 flags ) -{ CHAR szTemp[MAX_PATH]; +{ CHAR szTemp[MAX_PATH]; LPPIDLDATA pData; - DWORD ret=0; + LPITEMIDLIST pPidlTemp = NULL; + DWORD ret=0; TRACE(shell,"(%s,0x%lx,%p,0x%x,0x%x)\n", path,dwFileAttributes,psfi,sizeofpsfi,flags); /* translate the pidl to a path*/ if (flags & SHGFI_PIDL) - { SHGetPathFromIDList32A ((LPCITEMIDLIST)path,szTemp); - TRACE(shell,"pidl=%p is %s\n",path,szTemp); + { pPidlTemp = (LPCITEMIDLIST)path; + SHGetPathFromIDList32A (pPidlTemp, szTemp); + TRACE(shell,"pidl=%p is %s\n", path, szTemp); } else - { TRACE(shell,"path=%p\n",path); + { strcpy(szTemp,path); + TRACE(shell,"path=%s\n", szTemp); } if (flags & SHGFI_ATTRIBUTES) @@ -188,21 +191,24 @@ DWORD WINAPI SHGetFileInfo32A(LPCSTR path,DWORD dwFileAttributes, } } - if (flags & SHGFI_SYSICONINDEX) - { FIXME(shell,"get the SYSICONINDEX\n"); - psfi->iIcon=32; - if (flags & SHGFI_SMALLICON) - { TRACE(shell,"set to small icon\n"); - ret = (DWORD) ShellSmallIconList; - } - else - { TRACE(shell,"set to big icon\n"); - ret = (DWORD) ShellBigIconList; - } - } + if (flags & SHGFI_SYSICONINDEX) + { if (!pPidlTemp) + { pPidlTemp = ILCreateFromPath (szTemp); + } + psfi->iIcon = SHMapPIDLToSystemImageListIndex (NULL, pPidlTemp, 0); + TRACE(shell,"-- SYSICONINDEX %i\n", psfi->iIcon); - - return ret; + if (flags & SHGFI_SMALLICON) + { TRACE(shell,"set to small icon\n"); + ret = (DWORD) ShellSmallIconList; + } + else + { TRACE(shell,"set to big icon\n"); + ret = (DWORD) ShellBigIconList; + } + } + + return ret; } /*************************************************************************