84 lines
1.7 KiB
C++
84 lines
1.7 KiB
C++
//*******************************************************************************************
|
|
//
|
|
// Filename : XIcon.h
|
|
//
|
|
// defines for CImageList and CXIcon
|
|
//
|
|
// Copyright (c) 1994 - 1996 Microsoft Corporation. All rights reserved
|
|
//
|
|
//*******************************************************************************************
|
|
|
|
|
|
#ifndef _XICON_H_
|
|
#define _XICON_H_
|
|
|
|
class CImageList
|
|
{
|
|
public:
|
|
CImageList() : m_himl(NULL) {}
|
|
~CImageList() {if (m_himl) ImageList_Destroy(m_himl);}
|
|
|
|
operator HIMAGELIST() {return(m_himl);}
|
|
|
|
BOOL Create(int cx, int cy, int cGrow)
|
|
{
|
|
m_himl = ImageList_Create(cx, cy, ILC_MASK, cGrow, cGrow);
|
|
return(m_himl != NULL);
|
|
}
|
|
|
|
private:
|
|
HIMAGELIST m_himl;
|
|
} ;
|
|
|
|
class CXIcon
|
|
{
|
|
public:
|
|
CXIcon() {}
|
|
~CXIcon() {}
|
|
|
|
BOOL Init(HWND hwndLB, UINT idiDef);
|
|
CImageList& GetIML(BOOL bLarge) {return(bLarge ? m_cimlLg : m_cimlSm);}
|
|
|
|
enum
|
|
{
|
|
AI_LARGE = 0x0001,
|
|
AI_SMALL = 0x0002,
|
|
} ;
|
|
|
|
int AddIcon(HICON hIcon, UINT uFlags=AI_LARGE|AI_SMALL)
|
|
{
|
|
int i = -1;
|
|
|
|
if (uFlags & AI_LARGE)
|
|
{
|
|
i = ImageList_AddIcon(m_cimlLg, hIcon);
|
|
}
|
|
|
|
if (uFlags & AI_SMALL)
|
|
{
|
|
i = ImageList_AddIcon(m_cimlSm, hIcon);
|
|
}
|
|
|
|
return(i);
|
|
}
|
|
|
|
int GetIcon(IShellFolder *psf, LPCITEMIDLIST pidl);
|
|
|
|
private:
|
|
int GetCachedIndex(LPCTSTR szIconFile, int iIndex, UINT wFlags);
|
|
int CacheIcons(HICON hiconLarge, HICON hiconSmall,
|
|
LPCTSTR szIconFile, int iIndex, UINT wFlags);
|
|
static HRESULT ExtractIcon(LPCTSTR szIconFile, int iIndex, UINT wFlags,
|
|
HICON *phiconLarge, HICON *phiconSmall, DWORD dwSizes);
|
|
static UINT GetIDString(LPTSTR pszIDString, UINT uIDLen,
|
|
LPCTSTR szIconFile, int iIndex, UINT wFlags);
|
|
|
|
|
|
HWND m_hwndLB;
|
|
|
|
CImageList m_cimlLg;
|
|
CImageList m_cimlSm;
|
|
} ;
|
|
|
|
#endif // _XICON_H_
|