注册 登录
编程论坛 C++教室

编写一个绘图程序的问题,救助!!!

发布于 2010-06-10 21:56, 410 次点击
写一个绘图程序,程序运行后,当用户在客户区窗口按下鼠标左键并移动时,
根据鼠标移动动态的出现当前直线,但是当释放左键才会真正划出直线。

程序画的鼠标走过的轨迹,不符合要求啊


视图类CMyDrawView添加成员变量:
 protected:  // 定义有关鼠标作图的成员变量
    CPoint   m_ptOrigin;  // 起始点坐标
    bool   m_bDragging;   // 拖拽标记   
    HCURSOR   m_hCross;   // 光标句柄

在视图类CMyDrawView构造函数中设置拖拽标记和十字光标。
CMyDrawView::CMyDrawView()
{
    // TODO: add construction code here
    m_bDragging=false;  // 初始化拖拽标记   
    // 获得十字光标句柄
    m_hCross=AfxGetApp()->
             LoadStandardCursor(IDC_CROSS);
}
void   CMyDrawView::OnLButtonDown(
                UINT  nFlags,  CPoint  point)
{
    // TODO: Add your message  .  .  .  .  .  .
    SetCapture();  // 捕捉鼠标
    ::SetCursor(m_hCross);      // 设置十字光标
    m_ptOrigin=point;
    m_bDragging=TRUE;      // 设置拖拽标记   
//      CView::OnLButtonDown(nFlags, point);
}
void   CMyDrawView::OnMouseMove(
                UINT  nFlags, CPoint  point)
{
    // TODO: Add your message .  .  .  .  .  .
    if(m_bDragging)
    {
        CClientDC   dc(this);                  //客户区设备环境
        dc.MoveTo(m_ptOrigin);
        dc.LineTo(point);          // 绘制线段
        m_ptOrigin=point;          // 新的起始点
    }
    //  CView::OnMouseMove(nFlags, point);
}
ClassWizard类向导为视图类添加左键释放WM_LBUTTONUP的消息处理函数。
void   CMyDrawView::OnLButtonUp(
                UINT  nFlags, CPoint  point)
{
    // TODO: Add your message .  .  .  .  .  .
     if(m_bDragging)
    {
          m_bDragging=false;           // 清拖拽标记   
          ReleaseCapture();              // 释放鼠标,还原鼠标形状
    } if(m_bDragging)
    {
          m_bDragging=false;           // 清拖拽标记   
          ReleaseCapture();              // 释放鼠标,还原鼠标形状
    }
    CView::OnLButtonUp(nFlags, point);
}



以上程序画的鼠标走过的轨迹,不符合要求啊

0 回复
1