61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
// SysIconUtils.h
|
|
|
|
#ifndef __SYS_ICON_UTILS_H
|
|
#define __SYS_ICON_UTILS_H
|
|
|
|
#include "Common/MyString.h"
|
|
|
|
struct CExtIconPair
|
|
{
|
|
UString Ext;
|
|
int IconIndex;
|
|
// UString TypeName;
|
|
|
|
// int Compare(const CExtIconPair &a) const { return MyStringCompareNoCase(Ext, a.Ext); }
|
|
};
|
|
|
|
struct CAttribIconPair
|
|
{
|
|
DWORD Attrib;
|
|
int IconIndex;
|
|
// UString TypeName;
|
|
|
|
// int Compare(const CAttribIconPair &a) const { return Ext.Compare(a.Ext); }
|
|
};
|
|
|
|
class CExtToIconMap
|
|
{
|
|
public:
|
|
CRecordVector<CAttribIconPair> _attribMap;
|
|
CObjectVector<CExtIconPair> _extMap;
|
|
int SplitIconIndex;
|
|
int SplitIconIndex_Defined;
|
|
|
|
CExtToIconMap(): SplitIconIndex_Defined(false) {}
|
|
|
|
void Clear()
|
|
{
|
|
SplitIconIndex_Defined = false;
|
|
_extMap.Clear();
|
|
_attribMap.Clear();
|
|
}
|
|
int GetIconIndex(DWORD attrib, const wchar_t *fileName /* , UString *typeName */);
|
|
// int GetIconIndex(DWORD attrib, const UString &fileName);
|
|
};
|
|
|
|
DWORD_PTR GetRealIconIndex(CFSTR path, DWORD attrib, int &iconIndex);
|
|
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
|