MCPcopy Create free account
hub / github.com/ConEmu/ConEmu / LoadShellIcon

Method LoadShellIcon

src/ConEmuTh/ImgCache.cpp:883–1040  ·  view source on GitHub ↗

void CImgCache::UpdateCell(struct IMAGE_CACHE_INFO* pInfo, BOOL abLoadPreview) { if (pInfo->PreviewLoaded) return; // Уже if (abLoadPreview) { // Если хотят превьюшку - сразу поставим флажок, что пытались pInfo->bPreviewLoaded = TRUE; // Для папок - самостоятельно if (pInfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { return; } else { LoadThumbnail(pInfo); } } else { LoadShellIcon(pInfo); } }

Source from the content-addressed store, hash-verified

881// }
882//}
883BOOL CImgCache::LoadShellIcon(struct IMAGE_CACHE_INFO* pItem, BOOL bLargeIcon /*= TRUE*/)
884{
885 HICON hIcon = NULL;
886 HBITMAP hBmp = NULL;
887 BOOL lbPreviewWasLoaded = FALSE;
888 const wchar_t* pszName = pItem->lpwszFileName;
889 int nDrawRC = -1;
890 SHFILEINFO sfi = {NULL};
891 UINT cbSize = sizeof(sfi);
892 DWORD_PTR shRc = 0;
893 RECT rc = {0,0,32,32}; // если иконку удастся загрузить - будет перебито
894
895 if (!CheckLoadDibCreated())
896 return FALSE;
897
898 if (!pItem->lpwszFileName)
899 {
900 _ASSERTE(pItem->lpwszFileName);
901 return FALSE;
902 }
903
904#ifdef _DEBUG
905 wchar_t szDbg[MAX_PATH+32];
906 lstrcpy(szDbg, L"LoadShell: "); lstrcpyn(szDbg+11, pItem->lpwszFileName, MAX_PATH);
907 DEBUGSTRLOAD(szDbg);
908#endif
909
910 if (pItem->Icon.Pixels && pItem->Icon.cbPixelsSize)
911 {
912 memset(pItem->Icon.Pixels, 0, pItem->Icon.cbPixelsSize);
913 }
914
915 if (pItem->pszComments)
916 {
917 pItem->pszComments[0] = 0;
918 }
919
920 if (pszName[0] == L'.' && pszName[1] == L'.' && pszName[2] == 0)
921 {
922 if (!ghUpIcon)
923 ghUpIcon = LoadIcon(ghPluginModule, MAKEINTRESOURCE(IDI_UP));
924
925 if (ghUpIcon)
926 {
927 hIcon = ghUpIcon;
928 }
929 }
930 else
931 {
932 LPCWSTR pszFileName = pItem->lpwszFileName;
933 DWORD uFlags = SHGFI_ICON|(bLargeIcon?(SHGFI_LARGEICON|SHGFI_SHELLICONSIZE):SHGFI_SMALLICON)|SHGFI_USEFILEATTRIBUTES;
934
935 if (pszFileName && pItem->bVirtualItem)
936 {
937 pszFileName = PointToName(pszFileName);
938 if (!pszFileName || !*pszFileName)
939 pszFileName = L"File";
940

Callers 1

ProcessItemMethod · 0.80

Calls 1

PointToNameFunction · 0.85

Tested by

no test coverage detected