windows-nt/Source/XPSP1/NT/shell/shell32/filetbl.h
2020-09-26 16:20:57 +08:00

88 lines
2.9 KiB
C

#ifndef _FILETBL_H
#define _FILETBL_H
#define SHIL_COUNT (SHIL_LAST + 1)
// fileicon.c
STDAPI_(int) SHAddIconsToCache(HICON rghicon[SHIL_COUNT], LPCTSTR pszIconPath, int iIconIndex, UINT uIconFlags);
STDAPI AddToIconTable(LPCTSTR szFile, int iIconIndex, UINT uFlags, int iIndex);
STDAPI_(void) RemoveFromIconTable(LPCTSTR szFile);
STDAPI_(void) FlushIconCache(void);
STDAPI_(int) GetFreeImageIndex(void);
STDAPI_(void) IconCacheFlush(BOOL fForce);
STDAPI_(BOOL) IconCacheSave(void);
STDAPI_(BOOL) IconCacheRestore(SIZE rgsize[SHIL_COUNT], UINT flags);
STDAPI_(void) _IconCacheDump(void); // DEBUG ONLY
STDAPI_(int) LookupIconIndex(LPCTSTR pszFile, int iIconIndex, UINT uFlags);
STDAPI_(DWORD) LookupFileClass(LPCTSTR szClass);
STDAPI_(void) AddFileClass(LPCTSTR szClass, DWORD dw);
STDAPI_(void) FlushFileClass(void);
STDAPI_(BOOL) IconIndexInFileClassTable(int iIndex);
STDAPI_(LPCTSTR) LookupFileClassName(LPCTSTR szClass);
STDAPI_(LPCTSTR) AddFileClassName(LPCTSTR szClass, LPCTSTR szClassName);
STDAPI_(UINT) LookupFileSCIDs(LPCTSTR pszClass, SHCOLUMNID *pascidOut[]);
STDAPI_(void) AddFileSCIDs(LPCTSTR pszClass, SHCOLUMNID ascidIn[], UINT cProps);
// OpenAsTypes
typedef enum {
GEN_CUSTOM = -3,
GEN_UNSPECIFIED = -2,
GEN_FOLDER = -1,
GEN_UNKNOWN = 0,
GEN_TEXT,
GEN_IMAGE,
GEN_AUDIO,
GEN_VIDEO,
GEN_COMPRESSED,
} PERCEIVED;
STDAPI_(PERCEIVED) LookupFilePerceivedType(LPCTSTR pszClass);
STDAPI_(void) AddFilePerceivedType(LPCTSTR pszClass, PERCEIVED gen);
PERCEIVED GetPerceivedType(IShellFolder *psf, LPCITEMIDLIST pidl);
// g_MaxIcons is limit on the number of icons in the cache
// when we reach this limit we will start to throw icons away.
//
extern int g_MaxIcons; // panic limit for cache size
#ifdef DEBUG
#define DEF_MAX_ICONS 200 // to test the flush code more offten
#else
#define DEF_MAX_ICONS 500 // normal end user number
#endif
// refreshes g_MaxIcons from registry. returns TRUE if value changed.
BOOL QueryNewMaxIcons(void);
// g_iLastSysIcon is an indicator that is used to help determine which icons
// should be flushed and which icons shouldn't. In the EXPLORER.EXE process,
// the first 40 or so icons should be saved. On all other processes, only
// the icon overlay's should be saved.
extern UINT g_iLastSysIcon;
typedef struct
{
SIZE size; // icon size
HIMAGELIST himl;
} SHIMAGELIST;
EXTERN_C SHIMAGELIST g_rgshil[SHIL_COUNT];
BOOL _IsSHILInited();
int _GetSHILImageCount();
void _DestroyIcons(HICON *phicons, int cIcons);
// NOTE these are the size of the icons in our ImageList, not the system
// icon size.
#define g_cxIcon ((int)g_rgshil[SHIL_LARGE].size.cx)
#define g_cyIcon ((int)g_rgshil[SHIL_LARGE].size.cy)
#define g_cxSmIcon ((int)g_rgshil[SHIL_SMALL].size.cx)
#define g_cySmIcon ((int)g_rgshil[SHIL_SMALL].size.cy)
#endif // _FILETBL_H