JosiahH 2020-06-01 11:50 采纳率: 100%
浏览 400
已采纳

vs2017里用mfc写画图功能后,为什么不点击鼠标左键就会开始绘图

跟着老师敲完LBUTTONDOWN,MOUSEMOVE,LBUTTONUP后,本来是想鼠标左键按着不动来画图,但是程序运行时,没点鼠标左键,直接在客户区移动鼠标就开始画线了。
老师用的是vc++6.0,我用的vs2017

图片说明

void CDrawingboardView::OnPenChoice(UINT id)
{
    // TODO: 在此处添加实现代码.
    switch (id)
    {
    case ID_RED:color = RGB(255, 0, 0); break;
    case ID_GREEN:color = RGB(0, 255, 0); break;
    case ID_BLUE:color = RGB(0, 0, 255); break;
    case ID_YELLOW:color = RGB(255, 255, 0); break;
    case ID_BLACK:color = RGB(0, 0, 0); break;
    }
    pen.DeleteObject();
    pen.CreatePen(0, 1, color);

}

图片说明

void CDrawingboardView::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    spt.x = point.x;
    spt.y = point.y;

    CView::OnLButtonDown(nFlags, point);
}

void  CDrawingboardView::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CClientDC dc(this);//定义客户区显示器对象
    dc.SelectObject(&pen);

    ept.x = point.x;
    ept.y = point.y;

    if (spt.x >= 0)
    {
        dc.MoveTo(spt);
        dc.LineTo(ept);

        spt.x = ept.x;
        spt.y = ept.y;
    }

    CView::OnMouseMove(nFlags, point);
}

void CDrawingboardView::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    spt.x = -1;

    CView::OnLButtonUp(nFlags, point);
}
  • 写回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-06-01 14:11
    关注

    spt.x有初始化为-1吗

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

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line