// Windows/Control/ImageList.h | |
#ifndef __WINDOWS_CONTROL_IMAGE_LIST_H | |
#define __WINDOWS_CONTROL_IMAGE_LIST_H | |
#include <commctrl.h> | |
#include "../Defs.h" | |
namespace NWindows { | |
namespace NControl { | |
class CImageList | |
{ | |
HIMAGELIST m_Object; | |
public: | |
operator HIMAGELIST() const {return m_Object; } | |
CImageList(): m_Object(NULL) {} | |
bool Attach(HIMAGELIST imageList) | |
{ | |
if (imageList == NULL) | |
return false; | |
m_Object = imageList; | |
return true; | |
} | |
HIMAGELIST Detach() | |
{ | |
HIMAGELIST imageList = m_Object; | |
m_Object = NULL; | |
return imageList; | |
} | |
bool Create(int width, int height, UINT flags, int initialNumber, int grow) | |
{ | |
HIMAGELIST a = ImageList_Create(width, height, flags, | |
initialNumber, grow); | |
if (a == NULL) | |
return false; | |
return Attach(a); | |
} | |
bool Destroy() // DeleteImageList() in MFC | |
{ | |
if (m_Object == NULL) | |
return false; | |
return BOOLToBool(ImageList_Destroy(Detach())); | |
} | |
~CImageList() | |
{ Destroy(); } | |
int GetImageCount() const | |
{ return ImageList_GetImageCount(m_Object); } | |
bool GetImageInfo(int index, IMAGEINFO* imageInfo) const | |
{ return BOOLToBool(ImageList_GetImageInfo(m_Object, index, imageInfo)); } | |
int Add(HBITMAP hbmImage, HBITMAP hbmMask = 0) | |
{ return ImageList_Add(m_Object, hbmImage, hbmMask); } | |
int AddMasked(HBITMAP hbmImage, COLORREF mask) | |
{ return ImageList_AddMasked(m_Object, hbmImage, mask); } | |
int AddIcon(HICON icon) | |
{ return ImageList_AddIcon(m_Object, icon); } | |
int Replace(int index, HICON icon) | |
{ return ImageList_ReplaceIcon(m_Object, index, icon); } | |
// If index is -1, the function removes all images. | |
bool Remove(int index) | |
{ return BOOLToBool(ImageList_Remove(m_Object, index)); } | |
bool RemoveAll() | |
{ return BOOLToBool(ImageList_RemoveAll(m_Object)); } | |
HICON ExtractIcon(int index) | |
{ return ImageList_ExtractIcon(NULL, m_Object, index); } | |
HICON GetIcon(int index, UINT flags) | |
{ return ImageList_GetIcon(m_Object, index, flags); } | |
bool GetIconSize(int &width, int &height) const | |
{ return BOOLToBool(ImageList_GetIconSize(m_Object, &width, &height)); } | |
bool SetIconSize(int width, int height) | |
{ return BOOLToBool(ImageList_SetIconSize(m_Object, width, height)); } | |
}; | |
}} | |
#endif |