void CEllipse::Draw(CDC *pDC) { if(m_lStatus!=ST_NOMAL) return; LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); CBrush brush; brush.CreateBrushIndirect(&m_brush); CBrush *pOldBrush=pDC->SelectObject(&brush); pDC->SetBkMode(TRANSPARENT); long x1,y1,x2,y2; x1=m_lx1; y1=m_ly1; if(m_lx1>m_lx2){ m_lx1=m_lx2; m_lx2=x1; } if(m_ly1>m_ly2){ m_ly1=m_ly2; m_ly2=y1; } UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Ellipse(x1,y1,x2,y2); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CCell::DrawTracker(CDC *pDC) { LOGPEN tLogPen; tLogPen.lopnColor=RGB(0,0,0); tLogPen.lopnStyle=PS_DOT; tLogPen.lopnWidth.x=1; CPen tPen; tPen.CreatePenIndirect(&tLogPen); CPen *pOldPen=(CPen *)pDC->SelectObject(&tPen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; switch(m_lHitTarget){ case TK_CT: break; case TK_MOV: UPtoLP(Left(),Top(),&x1,&y1); UPtoLP(Right(),Bottom(),&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); MoveInCell(m_potTracker); UPtoLP(Left(),Top(),&x1,&y1); UPtoLP(Right(),Bottom(),&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; } pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CArc::Draw(CDC *pDC) { if(m_lStatus!=ST_NOMAL) return; LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); long x1,y1,x2,y2,x3,y3,x4,y4; x1=m_lx1; y1=m_ly1; if(m_lx1>m_lx2){ m_lx1=m_lx2; m_lx2=x1; } if(m_ly1>m_ly2){ m_ly1=m_ly2; m_ly2=y1; } UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); if(m_lx3==0 && m_ly3==0 && m_lx4==0 && m_ly4==0){ m_lx4=(m_lx2+m_lx1)/2; m_ly4=m_ly2+DELTA*2; m_lx3=m_lx2+DELTA*2; m_ly3=(m_ly1+m_ly2)/2; } UPtoLP(m_lx3,m_ly3,&x3,&y3); UPtoLP(m_lx4,m_ly4,&x4,&y4); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); pDC->SelectObject(pOldPen); }
void CLine::Draw(CDC *pDC) { long x1,y1,x2,y2; if(m_DnyAttr.m_Linked && m_DnyAttr.m_na) { CPen *pop=(CPen*)(pDC->SelectStockObject(BLACK_PEN)); CBrush *pob=(CBrush*)(pDC->SelectStockObject(WHITE_BRUSH)); UPtoLP(m_lox1,m_loy1,&x1,&y1); UPtoLP(m_lox2,m_loy2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); pDC->SelectObject(pop); pDC->SelectObject(pob); pDC->DrawIcon(x1,y1,ghNA); return; } if(m_DnyAttr.m_Linked && !m_DnyAttr.m_vi) return; LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); pDC->SelectObject(pOldPen); }
void CText::DrawHotPoints(CDC *pDC) { LOGPEN tLogPen; tLogPen.lopnColor=RGB(0,0,0); tLogPen.lopnStyle=PS_DOT; tLogPen.lopnWidth.x=1; CPen tPen; tPen.CreatePenIndirect(&tLogPen); CPen *pOldPen=(CPen *)pDC->SelectObject(&tPen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; UPtoLP(Left()-DELTA,Top()-DELTA,&x1,&y1); UPtoLP(Right()+DELTA,Bottom()+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); /* pDC->SelectStockObject(GRAY_BRUSH); pDC->SelectStockObject(NULL_PEN); pDC->SetROP2(R2_NOT); long x5,y5,x6,y6; UPtoLP((m_lx1+m_lx2)/2,m_ly1-DELTA,&x5,&y5); UPtoLP((m_lx1+m_lx2)/2,m_ly2+DELTA,&x6,&y6); DrawHotPoint(pDC,x5,y5); DrawHotPoint(pDC,x6,y6); */ pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CEllipse::DrawHotPoints(CDC *pDC) { CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(GRAY_BRUSH); CPen *pOldPen=(CPen *)pDC->SelectStockObject(NULL_PEN); pDC->SetROP2(R2_NOT); long x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx1,m_ly2,&x2,&y2); UPtoLP(m_lx2,m_ly1,&x3,&y3); UPtoLP(m_lx2,m_ly2,&x4,&y4); UPtoLP((m_lx1+m_lx2)/2,m_ly1,&x5,&y5); UPtoLP((m_lx1+m_lx2)/2,m_ly2,&x6,&y6); UPtoLP(m_lx1,(m_ly1+m_ly2)/2,&x7,&y7); UPtoLP(m_lx2,(m_ly1+m_ly2)/2,&x8,&y8); DrawHotPoint(pDC,x1,y1); DrawHotPoint(pDC,x2,y2); DrawHotPoint(pDC,x3,y3); DrawHotPoint(pDC,x4,y4); DrawHotPoint(pDC,x5,y5); DrawHotPoint(pDC,x6,y6); DrawHotPoint(pDC,x7,y7); DrawHotPoint(pDC,x8,y8); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CText::Draw(CDC *pDC) { if(m_lStatus!=ST_NOMAL) return; long x1,y1; LOGFONT tFont; tFont=m_font; UPtoLP(tFont.lfHeight,tFont.lfWidth,&tFont.lfHeight,&tFont.lfWidth); CFont font; font.CreateFontIndirect(&tFont); CFont *pOldFont=pDC->SelectObject(&font); int i,iWidth; long lTemp,lUWidth=0; UINT nTemp; i=0; while(i<m_text.GetLength()){ nTemp=(UCHAR)m_text[i]; if(IsDBCSLeadByte(nTemp)){ nTemp=nTemp*256+(UCHAR)m_text[i]; i++; } ::GetCharWidth(pDC->GetSafeHdc(),nTemp,nTemp,&iWidth); //CMeatFileDC没有属性DC,下面这句话就不灵了。 //pDC->GetCharWidth(nTemp,nTemp,&iWidth); CElement::LPtoUP(iWidth,iWidth,&lTemp,0); lUWidth+=lTemp; i++; } if(m_font.lfEscapement==0) m_lx2=m_lx1+lUWidth; else if(m_font.lfEscapement==900) m_ly2=m_ly1-lUWidth; else if(m_font.lfEscapement==1800) m_lx2=m_lx1-lUWidth; else if(m_font.lfEscapement==2700) m_ly2=m_ly1+lUWidth; pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(m_FaceColor); UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->TextOut(x1,y1,m_text); //pDC->SetBkMode(OPAQUE); pDC->SelectObject(pOldFont); }
void CCursor::Hide(CDC *pDC) { if(!m_bShow) return; m_bShow=false; CPen *pOldPen=(CPen *)pDC->SelectStockObject(BLACK_PEN); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; UPtoLP(m_lx,m_ly,&x1,&y1); UPtoLP(m_lx,m_ly+m_lHeight,&x2,&y2); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldPen); }
void CLine::DrawHotPoints(CDC *pDC) { LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(GRAY_BRUSH); pDC->SetROP2(R2_NOT); long x1,y1,x2,y2; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); DrawHotPoint(pDC,x1,y1); DrawHotPoint(pDC,x2,y2); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); }
void CCell::DrawHotPoints(CDC *pDC) { LOGPEN tLogPen; tLogPen.lopnColor=RGB(0,0,0); tLogPen.lopnStyle=PS_DOT; tLogPen.lopnWidth.x=1; CPen tPen; tPen.CreatePenIndirect(&tLogPen); CPen *pOldPen=(CPen *)pDC->SelectObject(&tPen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; UPtoLP(Left()-DELTA,Top()-DELTA,&x1,&y1); UPtoLP(Right()+DELTA,Bottom()+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CLine::DrawTracker(CDC *pDC) { LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); // CPen *pOldPen=(CPen *)pDC->SelectStockObject(BLACK_PEN); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); switch(m_lHitTarget) { case TK_LT: m_lx1=m_potTracker.x; m_ly1=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); break; case TK_RB: m_lx2=m_potTracker.x; m_ly2=m_potTracker.y; UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); break; case TK_MOV: m_lx1+=m_potTracker.x; m_ly1+=m_potTracker.y; m_lx2+=m_potTracker.x; m_ly2+=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); break; } pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldPen); }
void CElement::DrawHotPoint(CDC *pDC, long x, long y) { long lDeltaX,lDeltaY; UPtoLP(DELTA,DELTA,&lDeltaX,&lDeltaY); pDC->Rectangle(x-lDeltaX,y-lDeltaY,x+lDeltaX,y+lDeltaY); }
void CArc::DrawTracker(CDC *pDC) { LOGPEN tPen=m_pen; UPtoLP(m_pen.lopnWidth.x,m_pen.lopnWidth.y,&tPen.lopnWidth.x,&tPen.lopnWidth.y); CPen pen; pen.CreatePenIndirect(&tPen); CPen *pOldPen=pDC->SelectObject(&pen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2,x3,y3,x4,y4; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); UPtoLP(m_lx3,m_ly3,&x3,&y3); UPtoLP(m_lx4,m_ly4,&x4,&y4); //pDC->Chord(x1,y1,x2,y2,x3,y3,x4,y4); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); switch(m_lHitTarget){ case TK_LT: m_lx1=m_potTracker.x; m_ly1=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_LB: m_lx1=m_potTracker.x; m_ly2=m_potTracker.y; UPtoLP(m_lx1,m_ly2,&x1,&y2); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_RT: m_lx2=m_potTracker.x; m_ly1=m_potTracker.y; UPtoLP(m_lx2,m_ly1,&x2,&y1); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_RB: m_lx2=m_potTracker.x; m_ly2=m_potTracker.y; UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_LM: m_lx1=m_potTracker.x; UPtoLP(m_lx1,m_lx1,&x1,0); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_RM: m_lx2=m_potTracker.x; UPtoLP(m_lx2,m_lx2,&x2,0); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_TM: m_ly1=m_potTracker.y; UPtoLP(m_ly1,m_ly1,0,&y1); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_BM: m_ly2=m_potTracker.y; UPtoLP(m_ly2,m_ly2,0,&y2); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_MOV: m_lx1+=m_potTracker.x; m_ly1+=m_potTracker.y; m_lx2+=m_potTracker.x; m_ly2+=m_potTracker.y; m_lx3+=m_potTracker.x; m_ly3+=m_potTracker.y; m_lx4+=m_potTracker.x; m_ly4+=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); UPtoLP(m_lx3,m_ly3,&x3,&y3); UPtoLP(m_lx4,m_ly4,&x4,&y4); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_SP: m_lx3=m_potTracker.x; m_ly3=m_potTracker.y; UPtoLP(m_lx3,m_ly3,&x3,&y3); //pDC->Chord(x1,y1,x2,y2,x3,y3,x4,y4); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; case TK_EP: m_lx4=m_potTracker.x; m_ly4=m_potTracker.y; UPtoLP(m_lx4,m_ly4,&x4,&y4); //pDC->Chord(x1,y1,x2,y2,x3,y3,x4,y4); pDC->Arc(x1,y1,x2,y2,x3,y3,x4,y4); break; } pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CArc::DrawHotPoints(CDC *pDC) { CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(GRAY_BRUSH); CPen *pOldPen=(CPen *)pDC->SelectStockObject(NULL_PEN); pDC->SetROP2(R2_NOT); long x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx1,m_ly2,&x2,&y2); UPtoLP(m_lx2,m_ly1,&x3,&y3); UPtoLP(m_lx2,m_ly2,&x4,&y4); UPtoLP((m_lx1+m_lx2)/2,m_ly1,&x5,&y5); UPtoLP((m_lx1+m_lx2)/2,m_ly2,&x6,&y6); UPtoLP(m_lx1,(m_ly1+m_ly2)/2,&x7,&y7); UPtoLP(m_lx2,(m_ly1+m_ly2)/2,&x8,&y8); DrawHotPoint(pDC,x1,y1); DrawHotPoint(pDC,x2,y2); DrawHotPoint(pDC,x3,y3); DrawHotPoint(pDC,x4,y4); DrawHotPoint(pDC,x5,y5); DrawHotPoint(pDC,x6,y6); DrawHotPoint(pDC,x7,y7); DrawHotPoint(pDC,x8,y8); long x0,y0,x9,y9; UPtoLP(m_lx3,m_ly3,&x0,&y0); UPtoLP(m_lx4,m_ly4,&x9,&y9); long lDeltaX,lDeltaY; UPtoLP((long)(1.2*DELTA),(long)(1.2*DELTA),&lDeltaX,&lDeltaY); pDC->Ellipse(x0-lDeltaX,y0-lDeltaY,x0+lDeltaX,y0+lDeltaY); pDC->Ellipse(x9-lDeltaX,y9-lDeltaY,x9+lDeltaX,y9+lDeltaY); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CEllipse::DrawTracker(CDC *pDC) { LOGPEN tLogPen; tLogPen.lopnColor=RGB(0,0,0); tLogPen.lopnStyle=PS_DASH; tLogPen.lopnWidth.x=1; CPen tPen; tPen.CreatePenIndirect(&tLogPen); CPen *pOldPen=(CPen *)pDC->SelectObject(&tPen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); switch(m_lHitTarget){ case TK_LT: m_lx1=m_potTracker.x; m_ly1=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->Rectangle(x1,y1,x2,y2); break; case TK_LB: m_lx1=m_potTracker.x; m_ly2=m_potTracker.y; UPtoLP(m_lx1,m_ly2,&x1,&y2); pDC->Rectangle(x1,y1,x2,y2); break; case TK_RT: m_lx2=m_potTracker.x; m_ly1=m_potTracker.y; UPtoLP(m_lx2,m_ly1,&x2,&y1); pDC->Rectangle(x1,y1,x2,y2); break; case TK_RB: m_lx2=m_potTracker.x; m_ly2=m_potTracker.y; UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; case TK_LM: m_lx1=m_potTracker.x; UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->Rectangle(x1,y1,x2,y2); break; case TK_TM: m_ly1=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); pDC->Rectangle(x1,y1,x2,y2); break; case TK_RM: m_lx2=m_potTracker.x; UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; case TK_BM: m_ly2=m_potTracker.y; UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; case TK_MOV: m_lx1+=m_potTracker.x; m_ly1+=m_potTracker.y; m_lx2+=m_potTracker.x; m_ly2+=m_potTracker.y; UPtoLP(m_lx1,m_ly1,&x1,&y1); UPtoLP(m_lx2,m_ly2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; } pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CText::DrawTracker(CDC *pDC) { LOGPEN tLogPen; tLogPen.lopnColor=RGB(0,0,0); tLogPen.lopnStyle=PS_DOT; tLogPen.lopnWidth.x=1; CPen tPen; tPen.CreatePenIndirect(&tLogPen); CPen *pOldPen=(CPen *)pDC->SelectObject(&tPen); CBrush *pOldBrush=(CBrush *)pDC->SelectStockObject(NULL_BRUSH); LOGFONT tFont; tFont=m_font; UPtoLP(tFont.lfHeight,tFont.lfWidth,&tFont.lfHeight,&tFont.lfWidth); CFont font; font.CreateFontIndirect(&tFont); CFont *pOldFont=pDC->SelectObject(&font); pDC->SetROP2(R2_NOTXORPEN); long x1,y1,x2,y2; // UPtoLP(m_lx1,m_ly1,&x1,&y1); // UPtoLP(m_lx2,m_ly2,&x2,&y2); // long ly1,ly2; switch(m_lHitTarget) { case TK_CT: //pDC->SetTextColor(m_FaceColor); //pDC->TextOut(x1,y1,m_text); break; /* case TK_TM: ly1=m_potTracker.y; if((m_ly2-ly1)>=2*DELTA){ UPtoLP(m_lx1-DELTA,m_ly1-DELTA,&x1,&y1); UPtoLP(m_lx2+DELTA,m_ly2+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); m_ly1=ly1+DELTA; m_font.lfHeight=m_ly2-m_ly1; UPtoLP(m_lx1-DELTA,m_ly1-DELTA,&x1,&y1); pDC->Rectangle(x1,y1,x2,y2); } break; case TK_BM: ly2=m_potTracker.y; if((ly2-m_ly1)>=2*DELTA){ UPtoLP(m_lx1-DELTA,m_ly1-DELTA,&x1,&y1); UPtoLP(m_lx2+DELTA,m_ly2+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); m_ly2=ly2-DELTA; m_font.lfHeight=m_ly2-m_ly1; UPtoLP(m_lx2+DELTA,m_ly2+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); } break; */ case TK_MOV: UPtoLP(Left()-DELTA,Top()-DELTA,&x1,&y1); UPtoLP(Right()+DELTA,Bottom()+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); m_lx1+=m_potTracker.x; m_ly1+=m_potTracker.y; m_lx2+=m_potTracker.x; m_ly2+=m_potTracker.y; UPtoLP(Left()-DELTA,Top()-DELTA,&x1,&y1); UPtoLP(Right()+DELTA,Bottom()+DELTA,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); break; } //pDC->SetBkMode(OPAQUE); pDC->SetROP2(R2_COPYPEN); pDC->SelectObject(pOldFont); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); }
void CText::Draw(CDC *pDC) { long x1,y1,x2,y2; if(m_DnyAttr.m_Linked && m_DnyAttr.m_na) { CPen *pop=(CPen*)(pDC->SelectStockObject(BLACK_PEN)); CBrush *pob=(CBrush*)(pDC->SelectStockObject(WHITE_BRUSH)); UPtoLP(m_lox1,m_loy1,&x1,&y1); UPtoLP(m_lox2,m_loy2,&x2,&y2); pDC->Rectangle(x1,y1,x2,y2); /* pDC->MoveTo(x1, y1); pDC->LineTo(x1 + 10, y1 + 10); pDC->MoveTo(x1 + 10, y1); pDC->LineTo(x1, y1 + 10); */ pDC->SelectObject(pop); pDC->SelectObject(pob); pDC->DrawIcon(x1,y1,ghNA); return; } if(m_DnyAttr.m_Linked && !m_DnyAttr.m_vi) return; LOGFONT tFont; tFont=m_font; UPtoLP(tFont.lfHeight,tFont.lfWidth,&tFont.lfHeight,&tFont.lfWidth); CFont font; font.CreateFontIndirect(&tFont); CFont *pOldFont=pDC->SelectObject(&font); int i,iWidth; long lTemp,lUWidth=0; UINT nTemp; i=0; while(i<m_text.GetLength()) { nTemp=(UCHAR)m_text[i]; if(IsDBCSLeadByte(nTemp)) { nTemp=nTemp*256+(UCHAR)m_text[i]; i++; } ::GetCharWidth(pDC->GetSafeHdc(),nTemp,nTemp,&iWidth); //CMeatFileDC没有属性DC,下面这句话就不灵了。 //pDC->GetCharWidth(nTemp,nTemp,&iWidth); CElement::LPtoUP(iWidth,iWidth,&lTemp,0); lUWidth+=lTemp; i++; } pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(m_FaceColor); UPtoLP(m_lx1,m_ly1,&x1,&y1); CString sTemp; sTemp=m_text; if(m_DnyAttr.m_ValueA.m_Used) { pmc_value_t d; set_value_type(d.Flags, dt_real4); pmc_type_cast(&m_DnyAttr.m_ValueA.m_TagValue, &d); sTemp.Format(m_DnyAttr.m_ValueA.m_Format, d.Value.flt); } else if(m_DnyAttr.m_ValueD.m_Used) { if(m_DnyAttr.m_ValueD.action_proc && m_DnyAttr.m_ValueD.action_proc != (void*)-1) { char * s; s = ((char * (WINAPI*)())m_DnyAttr.m_ValueD.action_proc)(); sTemp = s; free_buffer(s); } else { if(m_DnyAttr.m_ValueD.m_TagValue.Value.iValue) { sTemp=m_DnyAttr.m_ValueD.m_OnMsg; } else { sTemp=m_DnyAttr.m_ValueD.m_OffMsg; } } } pDC->TextOut(x1,y1,sTemp); pDC->SelectObject(pOldFont); }