mfc笔记画线
步骤一:
在CMFC0420View中添加三个变量: CPoint m_ptOrigin;//起始点坐标 bool m_bDragging; // 拖拽标记 HCURSOR m_hCross;// 光标句柄
步骤二:
在CMFC0420View构造函数中初始化变量 CMFC0420View::CMFC0420View() { }
步骤三:
在CMFC0420View类向导中添加消息OnLButtonDown,并进行设置 (这个函数添加了以后就是CMFC0420View的成员函数了) voidCMFC0420View::OnLButtonDown(UINTnFlags, CPointpoint) { }
步骤四:
在CMFC0420View类向导中添加消息OnMouseMove,并进行设置 voidCMFC0420View::OnMouseMove(UINTnFlags, CPointpoint) {
if (m_bDragging) {
CClientDC dc(this); dc.MoveTo(m_ptOrigin);
dc.LineTo(point); //绘制线段
// TODO: 在此添加消息处理程序代码和/或调用默认值 SetCapture(); //捕捉鼠标 ::SetCursor(m_hCross); //设置十字光标 m_ptOrigin =point;
m_bDragging = TRUE; //设置拖拽标记
//CView::OnLButtonDown(nFlags, point);
// TODO: 在此添加消息处理程序代码和/或调用默认值 // TODO: 在此处添加构造代码
m_hCross = AfxGetApp()->LoadStandardCursor(IDC_CROSS);//获取十字光标句柄 m_bDragging = false;//初始化拖拽标记
}
}
m_ptOrigin =point; //新的起始点
//CView::OnMouseMove(nFlags, point);
步骤四:
在CMFC0420View类向导中添加消息,OnLButtonUp并进行设置 voidCMFC0420View::OnLButtonUp(UINTnFlags, CPointpoint) { }
步骤五:
添加CCurve类,并进行如下定义和初始化 #include
classCCurve { public:
protected: };
CCurve::CCurve() { }
m_ptArray.SetSize(0, 128);
CArray
virtual ~CCurve(); void AddPoint(POINTpt) { }
void Draw(CDC* pDC);
m_ptArray.Add(pt);
//CView::OnLButtonUp(nFlags, point); if(m_bDragging) { }
m_bDragging = false; //清除拖拽标记
ReleaseCapture(); //释放鼠标,还原鼠标形状 // TODO: 在此添加消息处理程序代码和/或调用默认值
CCurve::~CCurve() { }
voidCCurve::Draw(CDC* pDC) { }
步骤六:
在CMFC0420Doc中添加成员变量和成员函数(加粗及下划线部分) classCMFC0420Doc : publicCDocument {
protected: // 仅从序列化创建
CMFC0420Doc();
DECLARE_DYNCREATE(CMFC0420Doc)
pDC->MoveTo(pDate[0]); for (int i = 1; i pDC->LineTo(pDate[i]); }//for if (pDC) { POINT *pDate = m_ptArray.GetData(); int nDate = m_ptArray.GetSize(); if (nDate<1) return; }//if // 特性 public: CArray void ADDCurve(CCurve *pCurve) { } void Draw(CDC* pDC); m_CurveArray.Add(pCurve); void Draw(CDC*pDC);