Home | History | Annotate | Download | only in Control
      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