在移动的图片上响应 OnMouseMove()事件,但鼠标放到图片上后,原来移动的图片却不动了,移开鼠标后,图片才继续移动,如何才能使鼠标放在图片上不影响图片的继续移动?  

解决方案 »

  1.   

    试在timer中移动一个能容纳图片的控件,响应这个控件的mousemove。
      

  2.   

    图片移动用GDI实现应该就没问题了,不要移动容纳图片的窗体
      

  3.   

    to: jennyvenus 我就是在timer中移动图片的,但是一旦响应mousemove()事件,图片就不动了,当鼠标从图片上移开后,图片仍可接着移动,我现在是要求能否在鼠标移动到图片上后,图片仍然在移动,并同时响应mousemove()事件.
      

  4.   

    也许你的某个变量如m_bIsMouseDown的设置有问题。移动图片其实就是不断DrawImage
      

  5.   

        我的图片其实是由 Picture 控件调用的 bitmap 图片,我在 OnTimer() 中不停的移动 Picture 控件,当鼠标移动到图片上的时候,弹出一个窗体显示一些数据(比如说图片当前的位置,距离等),现在出现的问题是,当图片在移动时,我的鼠标一旦放在图片上,窗体弹出后,图片就不动了,等鼠标移开后,图片才又开始移动。    因此,我希望能够有方法使得  鼠标移动到图片上后,窗体弹出,但图片仍然继续移动,不要停止。
      

  6.   

    mousemove()事件必须处理得足够快,因为OnTimer()和mousemove()事件都要排队处理,之后一个处理完才会处理下一个事件,如果mousemove()事件花的时间太长,甚至是停在那边,那么OnTimer()就不会立即触发
      

  7.   

    我的窗体不是模态的,void CPictureDlg::OnMouseMove(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    CRect rect1;
    m_picVehicle4.GetWindowRect(&rect1); CRect rect;
    m_FlashDlg->GetWindowRect(&rect); ::GetCursorPos(&point);
    if(point.x >= rect1.left && point.x <= rect1.right && 
    point.y >= rect1.top && point.y <= rect1.bottom)
    {
    if(m_picVehicle4.IsWindowVisible())
    {
    m_FlashDlg->ShowWindow(SW_SHOW);
    m_FlashDlg->SetWindowPos(&wndTop,460,530,
    rect.right-rect.left,rect.bottom-rect.top,SWP_DRAWFRAME);
    m_FlashDlg->UpdateWindow();
    }
    }
    else
    {
    m_FlashDlg->ShowWindow(SW_HIDE);
    }

    CDialog::OnMouseMove(nFlags, point);
    }
      

  8.   

    问题已经解决了,是 m_FlashDlg->SetWindowPos(&wndTop,460,530,
                    rect.right-rect.left,rect.bottom-rect.top,SWP_DRAWFRAME);
    这句有问题,将最后的参数 SWP_DRAWFRAME 改为 SWP_SHOWWINDOW 就可以了。