Changeset 3250 for trunk/src/shell32/iconcache.cpp
- Timestamp:
- Mar 27, 2000, 5:09:22 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/iconcache.cpp
r3243 r3250 1 /* $Id: iconcache.cpp,v 1. 4 2000-03-26 16:34:41cbratschi Exp $ */1 /* $Id: iconcache.cpp,v 1.5 2000-03-27 15:09:20 cbratschi Exp $ */ 2 2 3 3 /* … … 135 135 size = ne_header.rname_tab_offset - ne_header.resource_tab_offset; 136 136 137 //@@@PH no NE support138 #if 1139 137 if( size > sizeof(NE_TYPEINFO) ) 140 138 { pTypeInfo = (BYTE*)HeapAlloc( GetProcessHeap(), 0, size); … … 147 145 } 148 146 } 149 #endif150 147 151 148 *retptr = pTypeInfo; … … 157 154 * SHELL_LoadResource 158 155 */ 159 //@@@PH no NE support160 #if 1161 156 static BYTE * SHELL_LoadResource( HFILE hFile, NE_NAMEINFO* pNInfo, WORD sizeShift, ULONG *uSize) 162 157 { BYTE* ptr; … … 173 168 return 0; 174 169 } 175 #endif176 170 177 171 /************************************************************************* … … 256 250 */ 257 251 HGLOBAL WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nIconIndex, UINT n, UINT cxDesired, UINT cyDesired ) 258 // @@@PH turned off259 #if 0260 {261 dprintf (("SHELL32: ICO_ExtractIconEx not implemented.\n"));262 return 0;263 }264 #else265 252 { HGLOBAL hRet = 0; 266 253 LPBYTE pData; … … 268 255 DWORD sig; 269 256 HFILE hFile = OpenFile( lpszExeFileName, &ofs, OF_READ ); 270 UINT 16iconDirCount = 0,iconCount = 0;257 UINT iconDirCount = 0,iconCount = 0; 271 258 LPBYTE peimage; 272 259 HANDLE fmapping; … … 280 267 sig = SHELL_GetResourceTable(hFile,&pData); 281 268 282 //@@@PH no NE support 283 #if 1 284 /* ico file */ 269 /* ico file */ 285 270 if( sig==IMAGE_OS2_SIGNATURE || sig==1 ) /* .ICO file */ 286 271 { BYTE *pCIDir = 0; … … 318 303 } 319 304 else if( nIconIndex < iconDirCount ) 320 { UINT 16i, icon;305 { UINT i, icon; 321 306 if( n > iconDirCount - nIconIndex ) 322 307 n = iconDirCount - nIconIndex; … … 357 342 HeapFree( GetProcessHeap(), 0, pData); 358 343 } 359 /* end ico file */ 360 #endif 361 362 /* exe/dll */ 344 /* end ico file */ 345 346 /* exe/dll */ 363 347 if( sig == IMAGE_NT_SIGNATURE) 364 348 { LPBYTE idata,igdata; … … 514 498 return hRet; 515 499 } 516 #endif517 500 518 501 /********************** THE ICON CACHE ********************************/ … … 948 931 949 932 /********************************************************************** 950 * 951 * 952 * 933 * GetResDirEntryW 934 * 935 * Helper function - goes down one level of PE resource tree 953 936 * 954 937 */ 955 938 PIMAGE_RESOURCE_DIRECTORY GetResDirEntryW(PIMAGE_RESOURCE_DIRECTORY resdirptr, 956 957 939 LPCWSTR name,DWORD root, 940 BOOL allowdefault) 958 941 { 959 942 int entrynum; … … 962 945 963 946 if (HIWORD(name)) { 964 965 charbuf[10];966 967 968 969 970 971 947 if (name[0]=='#') { 948 char buf[10]; 949 950 lstrcpynWtoA(buf,name+1,10); 951 return GetResDirEntryW(resdirptr,(LPCWSTR)atoi(buf),root,allowdefault); 952 } 953 entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ( 954 (BYTE *) resdirptr + 972 955 sizeof(IMAGE_RESOURCE_DIRECTORY)); 973 974 975 976 977 978 979 980 981 982 983 984 985 986 956 namelen = lstrlenW(name); 957 for (entrynum = 0; entrynum < resdirptr->NumberOfNamedEntries; entrynum++) 958 { 959 PIMAGE_RESOURCE_DIR_STRING_U str = 960 (PIMAGE_RESOURCE_DIR_STRING_U) (root + 961 entryTable[entrynum].u1.s.NameOffset); 962 if(namelen != str->Length) 963 continue; 964 if(lstrncmpiW(name,str->NameString,str->Length)==0) 965 return (PIMAGE_RESOURCE_DIRECTORY) ( 966 root + 967 entryTable[entrynum].u2.s.OffsetToDirectory); 968 } 969 return NULL; 987 970 } else { 988 989 971 entryTable = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ( 972 (BYTE *) resdirptr + 990 973 sizeof(IMAGE_RESOURCE_DIRECTORY) + 991 992 993 994 995 996 997 998 999 1000 1001 1002 974 resdirptr->NumberOfNamedEntries * sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY)); 975 for (entrynum = 0; entrynum < resdirptr->NumberOfIdEntries; entrynum++) 976 if ((DWORD)entryTable[entrynum].u1.Name == (DWORD)name) 977 return (PIMAGE_RESOURCE_DIRECTORY) ( 978 root + 979 entryTable[entrynum].u2.s.OffsetToDirectory); 980 /* just use first entry if no default can be found */ 981 if (allowdefault && !name && resdirptr->NumberOfIdEntries) 982 return (PIMAGE_RESOURCE_DIRECTORY) ( 983 root + 984 entryTable[0].u2.s.OffsetToDirectory); 985 return NULL; 1003 986 } 1004 987 }
Note:
See TracChangeset
for help on using the changeset viewer.