71 lines
2.4 KiB
C++
71 lines
2.4 KiB
C++
#include <mdiwin/btnlnk.hpp>
|
|
|
|
LinkedButton::LinkedButton(void)
|
|
: mCtlID(0), mhBitmapFocusUp(0), mhBitmapNoFocusUp(0), mFocus(Focus),
|
|
mhBitmapFocusDown(0), mlpBitmapDefault(0), mReferenceCount(0), mhLibrary(0)
|
|
{
|
|
}
|
|
|
|
LinkedButton::LinkedButton(int ctlID,String &focusUp,String &noFocusUp,String &focusDown,HINSTANCE hLibrary,FocusItem focusItem)
|
|
: mCtlID(ctlID), mReferenceCount(1), mFocus(focusItem),
|
|
mhLibrary(hLibrary), mFocusUpString(focusUp), mNoFocusUpString(noFocusUp),
|
|
mFocusDownString(focusDown)
|
|
{
|
|
loadButtons();
|
|
}
|
|
|
|
LinkedButton::LinkedButton(const LinkedButton &someLinkedButton)
|
|
: mCtlID(someLinkedButton.mCtlID), mReferenceCount(someLinkedButton.mReferenceCount),
|
|
mFocus(someLinkedButton.mFocus), mhLibrary(someLinkedButton.mhLibrary),
|
|
mFocusUpString(someLinkedButton.mFocusUpString),
|
|
mNoFocusUpString(someLinkedButton.mNoFocusUpString),
|
|
mFocusDownString(someLinkedButton.mFocusDownString)
|
|
{
|
|
loadButtons();
|
|
}
|
|
|
|
void LinkedButton::loadButtons(void)
|
|
{
|
|
mhBitmapFocusUp=::LoadBitmap(mhLibrary,mFocusUpString);
|
|
mhBitmapNoFocusUp=::LoadBitmap(mhLibrary,mNoFocusUpString);
|
|
mhBitmapFocusDown=::LoadBitmap(mhLibrary,mFocusDownString);
|
|
if(Focus==mFocus)mlpBitmapDefault=&mhBitmapFocusUp;
|
|
else mlpBitmapDefault=&mhBitmapNoFocusUp;
|
|
}
|
|
|
|
LinkedButton::~LinkedButton()
|
|
{
|
|
if(mhBitmapFocusUp)::DeleteObject(mhBitmapFocusUp);
|
|
if(mhBitmapNoFocusUp)::DeleteObject(mhBitmapNoFocusUp);
|
|
if(mhBitmapFocusDown)::DeleteObject(mhBitmapFocusDown);
|
|
}
|
|
|
|
WORD LinkedButton::drawButton(LPDRAWITEMSTRUCT lpControlData)
|
|
{
|
|
int retCode(TRUE);
|
|
RECT buttonRect;
|
|
|
|
::SetRect((RECT FAR *)&buttonRect,0,0,0,0);
|
|
switch(lpControlData->itemAction)
|
|
{
|
|
case ODA_DRAWENTIRE :
|
|
if(lpControlData->itemState & ODS_SELECTED)drawBitmap(lpControlData->hDC,mhBitmapFocusDown,buttonRect);
|
|
else if(lpControlData->itemState & ODS_FOCUS)drawBitmap(lpControlData->hDC,*mlpBitmapDefault,buttonRect);
|
|
else drawBitmap(lpControlData->hDC,mhBitmapNoFocusUp,buttonRect);
|
|
break;
|
|
case ODA_SELECT :
|
|
if(lpControlData->itemState & ODS_SELECTED)drawBitmap(lpControlData->hDC,mhBitmapFocusDown,buttonRect);
|
|
else
|
|
{
|
|
drawBitmap(lpControlData->hDC,mhBitmapFocusUp,buttonRect);
|
|
retCode=FALSE;
|
|
}
|
|
break;
|
|
case ODA_FOCUS :
|
|
if(lpControlData->itemState & ODS_FOCUS)drawBitmap(lpControlData->hDC,mhBitmapFocusUp,buttonRect);
|
|
else drawBitmap(lpControlData->hDC,mhBitmapNoFocusUp,buttonRect);
|
|
break;
|
|
}
|
|
return retCode;
|
|
}
|