http://www.j2megame.org/wupei/blog.php/myblog/vc/2008/01/11/arrow-in-mfc
CPen pen(nPenStyle,nWidth,crColor);
CPoint second,third;
CPen * pOldPen = dc.SelectObject( & pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
double slopy , cosy , siny;
double Par = 18.0 ; // length of Arrow
slopy = atan2((m_ptOrigin.y - m_ptEnd.y), (m_ptOrigin.x - m_ptEnd.x));
cosy = cos(slopy);
siny = sin(slopy);
CBrush cb;
cb.CreateSolidBrush(RGB( 0 , 111 , 255 ));
dc.SelectObject( & cb);
CPoint p[ 3 ];
p[ 0 ] = m_ptEnd;
p[ 1 ].x = m_ptEnd.x + int (Par * cosy - (Par / 2.0 * siny));
p[ 1 ].y = m_ptEnd.y + int (Par * siny + (Par / 2.0 * cosy));
p[ 2 ].x = m_ptEnd.x + int (Par * cosy + Par / 2.0 * siny);
p[ 2 ].y = m_ptEnd.y - int (Par / 2.0 * cosy - Par * siny);
dc.Polygon(p, 3 );
dc.SelectObject(pOldPen);
CPoint second,third;
CPen * pOldPen = dc.SelectObject( & pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(m_ptEnd);
double slopy , cosy , siny;
double Par = 18.0 ; // length of Arrow
slopy = atan2((m_ptOrigin.y - m_ptEnd.y), (m_ptOrigin.x - m_ptEnd.x));
cosy = cos(slopy);
siny = sin(slopy);
CBrush cb;
cb.CreateSolidBrush(RGB( 0 , 111 , 255 ));
dc.SelectObject( & cb);
CPoint p[ 3 ];
p[ 0 ] = m_ptEnd;
p[ 1 ].x = m_ptEnd.x + int (Par * cosy - (Par / 2.0 * siny));
p[ 1 ].y = m_ptEnd.y + int (Par * siny + (Par / 2.0 * cosy));
p[ 2 ].x = m_ptEnd.x + int (Par * cosy + Par / 2.0 * siny);
p[ 2 ].y = m_ptEnd.y - int (Par / 2.0 * cosy - Par * siny);
dc.Polygon(p, 3 );
dc.SelectObject(pOldPen);