//
#include <math.h>void DrawDashLine(CDC* pDC, LPPOINT ptStart, LPPOINT ptEnd, int nWidht, COLORREF crLine){ CPen pen(PS_DASH, nWidht, crLine); CPen *pOldPen = pDC->SelectObject(&pen); double k = (double)(ptEnd->y - ptStart->y)/(double)(ptEnd->x - ptStart->x); double b = ptEnd->y - k * ptEnd->x; double fAngle = atan(k); int dashLinLen = 10; // double ptDash_x = dashLinLen * cos(fAngle), ptDash_y = dashLinLen * sin(fAngle); double ptSpace_x = ptDash_x, ptSpace_y = ptDash_y; double pt1_x = ptStart->x, pt1_y = ptStart->y; while(pt1_x < ptEnd->x) { pDC->MoveTo((int)pt1_x, (int)pt1_y); double pt2_x = pt1_x + ptDash_x, pt2_y = pt1_y + ptDash_y; if(pt2_x > ptEnd->x) { pt2_x = ptEnd->x, pt2_y = ptEnd->y; } pDC->LineTo((int)pt2_x, (int)pt2_y); pt1_x += ptDash_x + ptSpace_x; pt1_y += ptDash_y + ptSpace_y; } pDC->SelectObject(pOldPen);}
// Test code void csdi_44view: ondraw (CDC * PDC) {csdi_44doc * pdoc = getdocument (); assert_valid (pdoc); // todo: add draw code for native data here crect rcclient; getclientrect (& rcclient); drawdashline (PDC, & rcclient. topleft (), & rcclient. bottomright (), 5, RGB (255, 0, 0 ));}
//