怎样在移动的图片上相应 OnMouseMove()事件,不影响图片的继续移动? 在移动的图片上响应 OnMouseMove()事件,但鼠标放到图片上后,原来移动的图片却不动了,移开鼠标后,图片才继续移动,如何才能使鼠标放在图片上不影响图片的继续移动? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试在timer中移动一个能容纳图片的控件,响应这个控件的mousemove。 图片移动用GDI实现应该就没问题了,不要移动容纳图片的窗体 to: jennyvenus 我就是在timer中移动图片的,但是一旦响应mousemove()事件,图片就不动了,当鼠标从图片上移开后,图片仍可接着移动,我现在是要求能否在鼠标移动到图片上后,图片仍然在移动,并同时响应mousemove()事件. 也许你的某个变量如m_bIsMouseDown的设置有问题。移动图片其实就是不断DrawImage 我的图片其实是由 Picture 控件调用的 bitmap 图片,我在 OnTimer() 中不停的移动 Picture 控件,当鼠标移动到图片上的时候,弹出一个窗体显示一些数据(比如说图片当前的位置,距离等),现在出现的问题是,当图片在移动时,我的鼠标一旦放在图片上,窗体弹出后,图片就不动了,等鼠标移开后,图片才又开始移动。 因此,我希望能够有方法使得 鼠标移动到图片上后,窗体弹出,但图片仍然继续移动,不要停止。 mousemove()事件必须处理得足够快,因为OnTimer()和mousemove()事件都要排队处理,之后一个处理完才会处理下一个事件,如果mousemove()事件花的时间太长,甚至是停在那边,那么OnTimer()就不会立即触发 我的窗体不是模态的,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);} 问题已经解决了,是 m_FlashDlg->SetWindowPos(&wndTop,460,530, rect.right-rect.left,rect.bottom-rect.top,SWP_DRAWFRAME);这句有问题,将最后的参数 SWP_DRAWFRAME 改为 SWP_SHOWWINDOW 就可以了。 PS中有很多窗体,表面上看是模式窗体,但是他的行为和普通的模式窗体不一样,比如色阶,在这个界面上点黑场取样工具,鼠标移动到后部图像会改变样式,这个功能如何实现? 求救啊 关于鼠标点击窗口关闭按钮的消息处理问题 请问如何在对话框类里调用视图类的变量? 我在MFC 扩展DLL中输出一个从CDialog的派生类,然后在应用程序中引用时出错.(在线等) 请问高手: VC6下如何打开另一个共享PC的文件? (加100分再问) ★★★ 新年快乐 ★★★ 一个似乎很简单的问题 VS7.0中写MFC程序,头晕! opengl简单问题 BMP图像读取问题,在线等 关于VC环境下语言指定的问题
{
// 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);
}
rect.right-rect.left,rect.bottom-rect.top,SWP_DRAWFRAME);
这句有问题,将最后的参数 SWP_DRAWFRAME 改为 SWP_SHOWWINDOW 就可以了。