Initial
This commit is contained in:
70
mdiwin/BTNLNK.CPP
Normal file
70
mdiwin/BTNLNK.CPP
Normal file
@@ -0,0 +1,70 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user