// TextPanel.cpp: implementation of the CTextPanel class. // ////////////////////////////////////////////////////////////////////// #include "TextPanel.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CTextPanel::CTextPanel(int x,int y,int width,int height,UINT title): CTaskPanel(x,y,width,height,title) { countPanelElements=0; selected=-1; } CTextPanel::~CTextPanel() { } void CTextPanel::DrawContent(HDC hDC){ COLORREF clfOld=(COLORREF)SetTextColor(hDC,RGB(0,0,255)); int iBackMode=SetBkMode(hDC,TRANSPARENT); int i=0; for(;iselected?FW_BOLD:FALSE, FALSE, TRUE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Times New Roman"); HFONT fnt=(HFONT)SelectObject(hDC,fntRoman); TextOut(hDC,ix+panelElements[i]->start.x+((panelElements[i]->selected)?-2:0),iy+panelElements[i]->start.y+((panelElements[i]->selected)?-1:0),panelElements[i]->text,strlen(panelElements[i]->text)); SelectObject(hDC,fnt); DeleteObject(fntRoman); } SetBkMode(hDC,iBackMode); SetTextColor(hDC,clfOld); } void CTextPanel::AddPanelElement(char *text) { if(countPanelElements==0){ panelElements=(PanelElement**)malloc(sizeof(PanelElement*)); }else{ panelElements=(PanelElement**)realloc(panelElements,sizeof(PanelElement*)*(countPanelElements+1)); } panelElements[countPanelElements]=(PanelElement*)malloc(sizeof(PanelElement)); panelElements[countPanelElements]->start.x=30; panelElements[countPanelElements]->start.y=30+countPanelElements*20; panelElements[countPanelElements]->end.x=panelElements[countPanelElements]->start.x+100; panelElements[countPanelElements]->end.y=panelElements[countPanelElements]->start.y+20; panelElements[countPanelElements]->selected=false; panelElements[countPanelElements]->text=text; countPanelElements++; } void CTextPanel::MouseButtonDown(int x, int y, bool bLeft) { int i=0; for(;iix+panelElements[i]->start.x && xend.x && y>iy+panelElements[i]->start.y && yend.y){ panelElements[i]->selected=true; selected=i; } } CTaskPanel::MouseButtonDown(x,y,bLeft); } int CTextPanel::MouseButtonUp(int x, int y, bool bLeft) { if(selected>=0){ int earlySelected=selected; panelElements[selected]->selected=false; selected=-1; return earlySelected; } CTaskPanel::MouseButtonUp(x,y,bLeft); return -1; } void CTextPanel::MouseMove(int x, int y) { CTaskPanel::MouseMove(x,y); }