1 // Windows/Control/ImageList.h 2 3 #ifndef __WINDOWS_CONTROL_IMAGE_LIST_H 4 #define __WINDOWS_CONTROL_IMAGE_LIST_H 5 6 #include <commctrl.h> 7 8 #include "../Defs.h" 9 10 namespace NWindows { 11 namespace NControl { 12 13 class CImageList 14 { 15 HIMAGELIST m_Object; 16 public: 17 operator HIMAGELIST() const {return m_Object; } 18 CImageList(): m_Object(NULL) {} 19 bool Attach(HIMAGELIST imageList) 20 { 21 if (imageList == NULL) 22 return false; 23 m_Object = imageList; 24 return true; 25 } 26 27 HIMAGELIST Detach() 28 { 29 HIMAGELIST imageList = m_Object; 30 m_Object = NULL; 31 return imageList; 32 } 33 34 bool Create(int width, int height, UINT flags, int initialNumber, int grow) 35 { 36 HIMAGELIST a = ImageList_Create(width, height, flags, 37 initialNumber, grow); 38 if (a == NULL) 39 return false; 40 return Attach(a); 41 } 42 43 bool Destroy() // DeleteImageList() in MFC 44 { 45 if (m_Object == NULL) 46 return false; 47 return BOOLToBool(ImageList_Destroy(Detach())); 48 } 49 50 ~CImageList() 51 { Destroy(); } 52 53 int GetImageCount() const 54 { return ImageList_GetImageCount(m_Object); } 55 56 bool GetImageInfo(int index, IMAGEINFO* imageInfo) const 57 { return BOOLToBool(ImageList_GetImageInfo(m_Object, index, imageInfo)); } 58 59 int Add(HBITMAP hbmImage, HBITMAP hbmMask = 0) 60 { return ImageList_Add(m_Object, hbmImage, hbmMask); } 61 int AddMasked(HBITMAP hbmImage, COLORREF mask) 62 { return ImageList_AddMasked(m_Object, hbmImage, mask); } 63 int AddIcon(HICON icon) 64 { return ImageList_AddIcon(m_Object, icon); } 65 int Replace(int index, HICON icon) 66 { return ImageList_ReplaceIcon(m_Object, index, icon); } 67 68 // If index is -1, the function removes all images. 69 bool Remove(int index) 70 { return BOOLToBool(ImageList_Remove(m_Object, index)); } 71 bool RemoveAll() 72 { return BOOLToBool(ImageList_RemoveAll(m_Object)); } 73 74 HICON ExtractIcon(int index) 75 { return ImageList_ExtractIcon(NULL, m_Object, index); } 76 HICON GetIcon(int index, UINT flags) 77 { return ImageList_GetIcon(m_Object, index, flags); } 78 79 bool GetIconSize(int &width, int &height) const 80 { return BOOLToBool(ImageList_GetIconSize(m_Object, &width, &height)); } 81 bool SetIconSize(int width, int height) 82 { return BOOLToBool(ImageList_SetIconSize(m_Object, width, height)); } 83 }; 84 85 }} 86 87 #endif 88