Matrix1123 2017-10-16 05:17 采纳率: 100%
浏览 1453
已采纳

新手求问MFC中onlbuttondown的第一次点击坐标为什么总是左上角?

目的实现一个很简单的画线功能,屏幕上点击两次,在这两点之间画出一条线段。以下是关键代码

 int count = 0;
CPoint points[2];
void CMFCApplication1View::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CDC *pDC = GetDC();
    CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
    pDC->SelectObject(&pen);
    if (count == 0) {
        points[0] = point;
        count++;
    }
    else{
        points[1] = point;
        pDC->LineTo(points[0]);
        pDC->MoveTo(points[1]);
        points[0] = (0, 0);
        points[1] = (0, 0);
        count = 0;
    }
    CView::OnLButtonDown(nFlags, point);
}

我用count记录点击的次数,每当点击两次以后就归零,把两次的鼠标坐标存在points数组里,画完一次再归零。然而运行结果如图,所有线段的一个端点都是左上角,请问改怎么修改代码?谢谢!

图片说明

  • 写回答

1条回答 默认 最新

  • littlebai07 2017-10-16 05:23
    关注

    pDC->LineTo(points[0]);
    pDC->MoveTo(points[1]);

    这两行是不是写反了?
    应该先MoveTo points[0]
    再LintTo points[1]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏