积极答复者
鼠标追踪线该如何处理

问题
答案
-
你好,
>应该怎么处理这个线,在下次鼠标移动到新位置时,擦除刚画的线
你可以在 mousemove响应中添加如下参考代码, 注意一定要调用Invalidate(),这个方法会发送WM_PAINT 消息从而使窗体重绘。
Invalidate();UpdateWindow();
CDC* pDC = GetDC();
pDC->MoveTo(point.x-m_Halflength,point.y);
pDC->LineTo(point.x+m_Halflength,point.y);
pDC->MoveTo(point.x,point.y-m_Halflength);
pDC->LineTo(point.x,point.y+m_Halflength);
ReleaseDC(pDC);
如果我不调用Invalidate(),我的运行结果如下:
类似问题,你还 可以参考以下相似问题的讨论链接:
http://bbs.csdn.net/topics/310045545
May
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.- 已标记为答案 Rogerguo 2016年1月20日 12:12
全部回复
-
你好,
>应该怎么处理这个线,在下次鼠标移动到新位置时,擦除刚画的线
你可以在 mousemove响应中添加如下参考代码, 注意一定要调用Invalidate(),这个方法会发送WM_PAINT 消息从而使窗体重绘。
Invalidate();UpdateWindow();
CDC* pDC = GetDC();
pDC->MoveTo(point.x-m_Halflength,point.y);
pDC->LineTo(point.x+m_Halflength,point.y);
pDC->MoveTo(point.x,point.y-m_Halflength);
pDC->LineTo(point.x,point.y+m_Halflength);
ReleaseDC(pDC);
如果我不调用Invalidate(),我的运行结果如下:
类似问题,你还 可以参考以下相似问题的讨论链接:
http://bbs.csdn.net/topics/310045545
May
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.- 已标记为答案 Rogerguo 2016年1月20日 12:12
-
CPoint m_pt; void CAEATDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_pt = point; InvalidateRect(NULL); UpdateWindow(); CDialog::OnMouseMove(nFlags, point); } void CAEATDlg::OnPaint() { CPaintDC dc(this); // device context for painting #define BASE_POINT_CX 20 #define BASE_POINT_CY 20 CPoint pt1, pt2, pt3, pt4; pt1.x = m_pt.x - BASE_POINT_CX; pt1.y = m_pt.y; pt2.x = m_pt.x + BASE_POINT_CX; pt2.y = m_pt.y; pt3.x = m_pt.x; pt3.y = m_pt.y - BASE_POINT_CY; pt4.x = m_pt.x; pt4.y = m_pt.y + BASE_POINT_CY; dc.MoveTo(pt1); dc.LineTo(pt2); dc.MoveTo(pt3); dc.LineTo(pt4); }
Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.