1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// SysIconUtils.h
#ifndef __SYS_ICON_UTILS_H
#define __SYS_ICON_UTILS_H
#include "Common/MyString.h"
struct CExtIconPair
{
UString Ext;
int IconIndex;
UString TypeName;
};
struct CAttribIconPair
{
DWORD Attrib;
int IconIndex;
UString TypeName;
};
inline bool operator==(const CExtIconPair &a1, const CExtIconPair &a2) { return a1.Ext == a2.Ext; }
inline bool operator< (const CExtIconPair &a1, const CExtIconPair &a2) { return a1.Ext < a2.Ext; }
inline bool operator==(const CAttribIconPair &a1, const CAttribIconPair &a2) { return a1.Attrib == a2.Attrib; }
inline bool operator< (const CAttribIconPair &a1, const CAttribIconPair &a2) { return a1.Attrib < a2.Attrib; }
class CExtToIconMap
{
CObjectVector<CExtIconPair> _extMap;
CObjectVector<CAttribIconPair> _attribMap;
public:
void Clear()
{
_extMap.Clear();
_attribMap.Clear();
}
int GetIconIndex(DWORD attrib, const UString &fileName, UString &typeName);
int GetIconIndex(DWORD attrib, const UString &fileName);
};
DWORD_PTR GetRealIconIndex(LPCTSTR path, DWORD attrib, int &iconIndex);
#ifndef _UNICODE
DWORD_PTR GetRealIconIndex(LPCWSTR path, DWORD attrib, int &iconIndex);
#endif
int GetIconIndexForCSIDL(int csidl);
#ifdef WIN32
inline HIMAGELIST GetSysImageList(bool smallIcons)
{
SHFILEINFO shellInfo;
return (HIMAGELIST)SHGetFileInfo(TEXT(""),
FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY,
&shellInfo, sizeof(shellInfo),
SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX | (smallIcons ? SHGFI_SMALLICON : SHGFI_ICON));
}
#endif
#endif
|