|
|
//*******************************************************************************************
//
// 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_
|