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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作