206 lines
5.6 KiB
C++
206 lines
5.6 KiB
C++
#ifndef _IMAGELIST_IMAGELIST_HPP_
|
|
#define _IMAGELIST_IMAGELIST_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_COMMCTRL_HPP_
|
|
#include <common/commctrl.hpp>
|
|
#endif
|
|
#ifndef _COMMON_RGBCOLOR_HPP_
|
|
#include <common/rgbcolor.hpp>
|
|
#endif
|
|
|
|
class GDIPoint;
|
|
class Point;
|
|
class PureBitmap;
|
|
class PureDevice;
|
|
class PureIcon;
|
|
class String;
|
|
class ImageInfo;
|
|
|
|
class ImageList
|
|
{
|
|
public:
|
|
enum ImageType{ImageMasked=0x0000,ImageUnMasked=0x0001};
|
|
enum DrawFlag{DrawNormal=ILD_NORMAL,DrawTransparent=ILD_TRANSPARENT,DrawMask=ILD_MASK,
|
|
DrawImage=ILD_IMAGE,DrawBlend25=ILD_BLEND25,DrawBlend50=ILD_BLEND50,
|
|
DrawOverlayMask=ILD_OVERLAYMASK};
|
|
ImageList(HINSTANCE hProcessInstance=(HINSTANCE)0);
|
|
ImageList(HIMAGELIST hImageList,HINSTANCE hProcessInstance=(HINSTANCE)0,ImageType imageType=ImageUnMasked);
|
|
ImageList(const ImageList &someImageList);
|
|
ImageList(HINSTANCE hProcessInstance,const String &bitmapName,DWORD widthImage,RGBColor maskColor=RGBColor(),DWORD growthFactor=1);
|
|
ImageList(HINSTANCE hProcessInstance,DWORD widthImage,DWORD heightImage,ImageType imageType=ImageUnMasked,DWORD initialCount=0,DWORD growthFactor=1);
|
|
virtual ~ImageList();
|
|
ImageList &operator=(const ImageList &someImageList);
|
|
ImageList &operator=(HIMAGELIST hImageList);
|
|
WORD operator==(const ImageList &someImageList);
|
|
operator HIMAGELIST(void);
|
|
WORD insertImage(HBITMAP hBitmap);
|
|
WORD insertImage(const PureBitmap &colorBitmap);
|
|
WORD insertImage(const PureBitmap &colorBitmap,const PureBitmap &maskBitmap);
|
|
WORD insertImage(const PureBitmap &colorBitmap,const RGBColor &maskColor);
|
|
WORD insertImage(PureIcon &somePureIcon);
|
|
WORD removeImage(DWORD itemIndex);
|
|
WORD replaceImage(DWORD itemIndex,const PureBitmap &colorBitmap,const PureBitmap &maskBitmap);
|
|
WORD replaceImage(DWORD itemIndex,PureIcon &somePureIcon);
|
|
BOOL beginDrag(DWORD itemIndex,const GDIPoint &dragPoint)const;
|
|
BOOL dragMove(const GDIPoint &dragPoint)const;
|
|
BOOL dragEnter(HWND hwndLock,const GDIPoint &imagePoint)const;
|
|
BOOL dragLeave(HWND hwndLock)const;
|
|
BOOL dragShowNoLock(BOOL showFlag)const;
|
|
BOOL setDragCursorImage(int itemIndex,const GDIPoint &hotSpot);
|
|
void endDrag(void)const;
|
|
DWORD size(void)const;
|
|
RGBColor setBkColor(RGBColor bkGndColor=RGBColor((COLORREF)CLR_NONE));
|
|
RGBColor getBkColor(void)const;
|
|
WORD drawImage(PureDevice &somePureDevice,const Point &xyPoint,DWORD itemIndex,DrawFlag drawFlag=DrawNormal);
|
|
WORD setOverlayImage(DWORD itemIndex,DrawFlag drawFlag);
|
|
BOOL imageInfo(int itemIndex,ImageInfo &imageInfo);
|
|
WORD isOkay(void)const;
|
|
private:
|
|
ImageType imageType(void)const;
|
|
WORD imageDimensions(Point &imageDimensions)const;
|
|
HICON extractIcon(DWORD itemIndex)const;
|
|
void destroyImageList(void);
|
|
WORD createImageList(DWORD widthImage,DWORD heightImage,ImageType imageType=ImageUnMasked,DWORD initialCount=0,DWORD growthFactor=1);
|
|
|
|
HIMAGELIST mhImageList;
|
|
HINSTANCE mhProcessInstance;
|
|
ImageType mImageType;
|
|
};
|
|
|
|
inline
|
|
ImageList::ImageList(HINSTANCE hProcessInstance)
|
|
: mhImageList(0), mImageType(ImageUnMasked), mhProcessInstance(hProcessInstance)
|
|
{
|
|
}
|
|
|
|
inline
|
|
ImageList::ImageList(HIMAGELIST hImageList,HINSTANCE hProcessInstance,ImageType imageType)
|
|
: mhImageList(hImageList), mhProcessInstance(hProcessInstance), mImageType(imageType)
|
|
{
|
|
}
|
|
|
|
inline
|
|
ImageList::ImageList(HINSTANCE hProcessInstance,DWORD widthImage,DWORD heightImage,ImageType imageType,DWORD initialCount,DWORD growthFactor)
|
|
: mhImageList(0), mImageType(ImageUnMasked), mhProcessInstance(hProcessInstance)
|
|
{
|
|
createImageList(widthImage,heightImage,imageType,initialCount,growthFactor);
|
|
}
|
|
|
|
inline
|
|
ImageList::ImageList(const ImageList &someImageList)
|
|
{
|
|
*this=someImageList;
|
|
}
|
|
|
|
inline
|
|
ImageList::~ImageList()
|
|
{
|
|
destroyImageList();
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::operator==(const ImageList &/*someImageList*/)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::createImageList(DWORD widthImage,DWORD heightImage,ImageType imageType,DWORD initialCount,DWORD growthFactor)
|
|
{
|
|
destroyImageList();
|
|
mhImageList=::ImageList_Create(widthImage,heightImage,imageType,initialCount,growthFactor);
|
|
return isOkay();
|
|
}
|
|
|
|
inline
|
|
void ImageList::destroyImageList(void)
|
|
{
|
|
if(!isOkay())return;
|
|
::ImageList_Destroy(mhImageList);
|
|
mhImageList=0;
|
|
}
|
|
|
|
inline
|
|
ImageList::operator HIMAGELIST(void)
|
|
{
|
|
return mhImageList;
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::insertImage(HBITMAP hBitmap)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_Add(mhImageList,hBitmap,0);
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::removeImage(DWORD itemIndex)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_Remove(mhImageList,itemIndex);
|
|
}
|
|
|
|
inline
|
|
DWORD ImageList::size(void)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_GetImageCount(mhImageList);
|
|
}
|
|
|
|
inline
|
|
RGBColor ImageList::setBkColor(RGBColor bkGndColor)
|
|
{
|
|
if(!isOkay())return RGBColor((COLORREF)0);
|
|
return RGBColor(::ImageList_SetBkColor(mhImageList,(COLORREF)bkGndColor));
|
|
}
|
|
|
|
inline
|
|
RGBColor ImageList::getBkColor(void)const
|
|
{
|
|
if(!isOkay())return RGBColor((COLORREF)0);
|
|
return RGBColor(::ImageList_GetBkColor(mhImageList));
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::setOverlayImage(DWORD itemIndex,DrawFlag drawFlag)
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_SetOverlayImage(mhImageList,itemIndex,(int)drawFlag);
|
|
}
|
|
|
|
inline
|
|
ImageList::ImageType ImageList::imageType(void)const
|
|
{
|
|
return mImageType;
|
|
}
|
|
|
|
inline
|
|
HICON ImageList::extractIcon(DWORD itemIndex)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_ExtractIcon(mhProcessInstance,mhImageList,itemIndex);
|
|
}
|
|
|
|
inline
|
|
void ImageList::endDrag(void)const
|
|
{
|
|
if(!isOkay())return;
|
|
::ImageList_EndDrag();
|
|
}
|
|
|
|
inline
|
|
BOOL ImageList::dragShowNoLock(BOOL showFlag)const
|
|
{
|
|
if(!isOkay())return FALSE;
|
|
return ::ImageList_DragShowNolock(showFlag);
|
|
}
|
|
|
|
inline
|
|
WORD ImageList::isOkay(void)const
|
|
{
|
|
return (mhImageList?TRUE:FALSE);
|
|
}
|
|
#endif
|