// ImagePanel.cpp: implementation of the CImagePanel class. // ////////////////////////////////////////////////////////////////////// #include "ImagePanel.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CImagePanel::CImagePanel(int ix,int iy,int iwidth,int iheight,UINT uiPanel): CTaskPanel(ix,iy,iwidth,iheight,uiPanel) { selected=-1; mouseOver=-1; countImageElements=0; HDC hDC=GetDC(GameEngine::GetEngine()->GetWindow()); bkButton[0]=new Bitmap(hDC,IDB_SIDE_BTN_DOWN,GameEngine::GetEngine()->GetInstance()); bkButton[1]=new Bitmap(hDC,IDB_SIDE_BTN_UP,GameEngine::GetEngine()->GetInstance()); //ReleaseDC(GameEngine::GetEngine()->GetWindow(),hDC); } CImagePanel::~CImagePanel() { } void CImagePanel::DrawContent(HDC hDC){ if(mouseOver>=0){ bkButton[1]->Draw(hDC,imageElements[mouseOver]->start.x+ix,imageElements[mouseOver]->start.y+iy,true); } if(selected>=0){ bkButton[0]->Draw(hDC,imageElements[selected]->start.x+ix,imageElements[selected]->start.y+iy,true); } int i=0; for(;ibmp->Draw(hDC,ix+element->start.x,iy+element->start.y,true); } } void CImagePanel::MouseMove(int x, int y) { int i=0; for(;iix+imageElements[i]->start.x && xend.x && y>iy+imageElements[i]->start.y && yend.y){ mouseOver=i; if(selected>=0) selected=i; return; } } mouseOver=-1; CTaskPanel::MouseMove(x,y); } void CImagePanel::MouseButtonDown(int x, int y, bool bLeft) { int i=0; for(;iix+imageElements[i]->start.x && xend.x && y>iy+imageElements[i]->start.y && yend.y){ selected=i; return; } } CTaskPanel::MouseButtonDown(x,y,bLeft); } int CImagePanel::MouseButtonUp(int x, int y, bool bLeft) { int earlySelected; if(selected>=0){ earlySelected=selected; selected=-1; //mouseOver=-1; //MouseMove(x,y); return earlySelected; } CTaskPanel::MouseButtonUp(x,y,bLeft); return -1; } void CImagePanel::AddElements(UINT uiStart, int Number) { imageElements=(ImageElement**)malloc(sizeof(ImageElement*)*Number); HDC hDC=GetDC(GameEngine::GetEngine()->GetWindow()); int i=0; for(;istart.x=(i%2?20:90); element->start.y=(i/2)*30+30; element->end.x=element->start.x+70; element->end.y=element->start.y+30; element->bmp=new Bitmap(hDC,uiStart+i,GameEngine::GetEngine()->GetInstance()); imageElements[i]=element; countImageElements++; iheight=element->end.y+10; } ReleaseDC(GameEngine::GetEngine()->GetWindow(),hDC); }