#ifndef _COMMON_PUREICON_HPP_ #define _COMMON_PUREICON_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_PUREDEVICE_HPP_ #include #endif #ifndef _COMMON_POINT_HPP_ #include #endif #ifndef _COMMON_ICONINFO_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif class PureIcon : public IconInfo { public: PureIcon(void); PureIcon(HICON hIcon); PureIcon(HINSTANCE hProcessInstance,const String &iconName); PureIcon(const PureIcon &somePureIcon); virtual ~PureIcon(); PureIcon &operator=(const PureIcon &somePureIcon); WORD operator==(const PureIcon &somePureIcon)const; WORD drawIcon(PureDevice &somePureDevice,const Point &xyPoint); operator HICON(void)const; WORD isOkay(void)const; private: void getIconInfo(void); void destroyIconInfo(void); HICON mhIcon; }; inline PureIcon::PureIcon(void) : mhIcon(0) { } inline PureIcon::PureIcon(HICON hIcon) : mhIcon(hIcon) { getIconInfo(); } inline PureIcon::PureIcon(HINSTANCE hProcessInstance,const String &iconName) : mhIcon(0) { if(iconName.isNull())return; mhIcon=::LoadIcon(hProcessInstance,iconName); getIconInfo(); return; } inline PureIcon::PureIcon(const PureIcon &somePureIcon) { *this=somePureIcon; } inline PureIcon::~PureIcon() { destroyIconInfo(); } inline PureIcon &PureIcon::operator=(const PureIcon &somePureIcon) { if(somePureIcon.isOkay()) { mhIcon=(HICON)somePureIcon; getIconInfo(); } return *this; } inline WORD PureIcon::operator==(const PureIcon &somePureIcon)const { return (HICON)*this==(HICON)somePureIcon; } inline PureIcon::operator HICON(void)const { return mhIcon; } inline WORD PureIcon::drawIcon(PureDevice &somePureDevice,const Point &xyPoint) { if(!isOkay())return FALSE; return ::DrawIcon(somePureDevice,xyPoint.x(),xyPoint.y(),mhIcon); } inline void PureIcon::getIconInfo(void) { if(!isOkay())return; destroyIconInfo(); ::GetIconInfo(mhIcon,&((_ICONINFO&)((IconInfo&)*this))); } inline void PureIcon::destroyIconInfo(void) { if(maskBitmap()){::DeleteObject(maskBitmap());maskBitmap(0);} if(colorBitmap()){::DeleteObject(colorBitmap());colorBitmap(0);} } inline WORD PureIcon::isOkay(void)const { return (mhIcon?TRUE:FALSE); } #endif