Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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);
}
Example #4
0
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);
}
Example #5
0
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);
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
0
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);
}
Example #9
0
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);
}
Example #10
0
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);
}
Example #11
0
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);
}
Example #12
0
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); 
}
Example #13
0
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);
}
Example #14
0
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);
}
Example #15
0
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);
}
Example #16
0
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);
}
Example #17
0
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);
}