shell32_ros.diff

来自「这是一个开放源代码的与WINNT/WIN2K/WIN2003兼容的操作系统」· DIFF 代码 · 共 78 行

DIFF
78
字号
Index: shell32_main.c
===================================================================
--- shell32_main.c	(revision 26448)
+++ shell32_main.c	(working copy)
@@ -509,23 +509,59 @@
     /* get the iconlocation */     if (SUCCEEDED(hr) && (flags & SHGFI_ICONLOCATION ))     {-        UINT uDummy,uFlags;+        if (!(flags & SHGFI_USEFILEATTRIBUTES))+        {+            UINT uDummy,uFlags; -        hr = IShellFolder_GetUIObjectOf(psfParent, 0, 1,-               (LPCITEMIDLIST*)&pidlLast, &IID_IExtractIconA,-               &uDummy, (LPVOID*)&pei);-        if (SUCCEEDED(hr))+            hr = IShellFolder_GetUIObjectOf(psfParent, 0, 1,+                   (LPCITEMIDLIST*)&pidlLast, &IID_IExtractIconA,+                   &uDummy, (LPVOID*)&pei);+            if (SUCCEEDED(hr))+            {+                hr = IExtractIconW_GetIconLocation(pei, uGilFlags,+                        szLocation, MAX_PATH, &iIndex, &uFlags);+                psfi->iIcon = iIndex;++                if (!(uFlags & GIL_NOTFILENAME))+                    lstrcpyW (psfi->szDisplayName, szLocation);+                else+                    ret = FALSE;++                IExtractIconA_Release(pei);+            }+        }+        else         {-            hr = IExtractIconW_GetIconLocation(pei, uGilFlags,-                    szLocation, MAX_PATH, &iIndex, &uFlags);-            psfi->iIcon = iIndex;--            if (!(uFlags & GIL_NOTFILENAME))-                lstrcpyW (psfi->szDisplayName, szLocation);+            if (dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)+            {+                strcpyW(psfi->szDisplayName, swShell32Name);+                psfi->iIcon = SIC_GetIconIndex(swShell32Name, -IDI_SHELL_FOLDER, 0);+            }             else-                ret = FALSE;+            {+                WCHAR sTemp [MAX_PATH];+                WCHAR * szExt;+                DWORD dwNr=0;+                static const WCHAR p1W[] = {'%','1',0}; -            IExtractIconA_Release(pei);+                lstrcpynW(sTemp, szFullPath, MAX_PATH);++                psfi->iIcon = 0;+                szExt = (LPWSTR) PathFindExtensionW(sTemp);+                if ( szExt &&+                     HCR_MapTypeToValueW(szExt, sTemp, MAX_PATH, TRUE) &&+                     HCR_GetDefaultIconW(sTemp, sTemp, MAX_PATH, &dwNr))+                {+                    if (!lstrcmpW(p1W,sTemp))            /* icon is in the file */+                        strcpyW(psfi->szDisplayName, szFullPath);+                    else+                        strcpyW(psfi->szDisplayName, sTemp);++                    psfi->iIcon = SIC_GetIconIndex(psfi->szDisplayName, dwNr, 0);+                    if (psfi->iIcon == -1)+                        psfi->iIcon = 0;+                }+            }         }     } 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?