Files
Work/common/BMPLNK.HPP
2024-08-07 09:09:36 -04:00

104 lines
2.0 KiB
C++

#ifndef _COMMON_LINKEDBITMAP_HPP_
#define _COMMON_LINKEDBITMAP_HPP_
#ifndef _COMMON_DRAWBITMAP_HPP_
#include <common/drawbmp.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
class LinkedBitmap : public DrawBitmap
{
public:
LinkedBitmap(void);
LinkedBitmap(int ctlID,String &bitmapName,HINSTANCE hLibrary);
LinkedBitmap(const LinkedBitmap &someLinkedBitmap);
virtual ~LinkedBitmap();
WORD drawBitmap(HDC hDC,RECT locationRect);
WORD drawBitmap(void);
int referenceCount(void)const;
void referenceCount(int newCount);
bool operator==(const LinkedBitmap &someLinkedBitmap)const;
bool operator==(int ctlID)const;
DWORD width(void)const;
DWORD height(void)const;
HBITMAP getHBITMAP(void)const;
bool isOkay(void)const;
bool loadBitmap(const String &strBitmapName,HINSTANCE hInstance=::GetModuleHandle(0));
private:
void getBitmapInfo(void);
void destroy(void);
int mCtlID;
HBITMAP mhBitmap;
BITMAP mBitmapInfo;
String mBitmapName;
int mReferenceCount;
HINSTANCE mhLibrary;
};
inline
int LinkedBitmap::referenceCount(void)const
{
return mReferenceCount;
}
inline
void LinkedBitmap::referenceCount(int newCount)
{
mReferenceCount=newCount;
}
inline
bool LinkedBitmap::operator==(const LinkedBitmap &someLinkedBitmap)const
{
return (mCtlID==someLinkedBitmap.mCtlID);
}
inline
bool LinkedBitmap::operator==(int ctlID)const
{
return mCtlID==ctlID;
}
inline
bool LinkedBitmap::loadBitmap(const String &strBitmapName,HINSTANCE hInstance)
{
destroy();
mhBitmap=::LoadBitmap(hInstance,strBitmapName.str());
if(!mhBitmap)return false;
getBitmapInfo();
return true;
}
inline
void LinkedBitmap::getBitmapInfo(void)
{
::GetObject(mhBitmap,sizeof(BITMAP),(LPSTR)&mBitmapInfo);
}
inline
DWORD LinkedBitmap::width(void)const
{
return mBitmapInfo.bmWidth;
}
inline
DWORD LinkedBitmap::height(void)const
{
return mBitmapInfo.bmHeight;
}
inline
HBITMAP LinkedBitmap::getHBITMAP(void)const
{
return mhBitmap;
}
inline
bool LinkedBitmap::isOkay(void)const
{
return mhBitmap?true:false;
}
#endif