基于对话框--鼠标拖动图片
最近在写一个鼠标拖动图片的程序,但是鼠标拖动图片,图片位置不动.
void CDemoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
vector<CMyBitmap*>::iterator siSprite;
for (siSprite = m_vbitmap.begin(); siSprite != m_vbitmap.end(); siSprite++)
{
//计算各个图片的范围矩形
CRgn TMP;
int x1 = (*siSprite)->GetIniPos().x;
int y1 = (*siSprite)->GetIniPos().y;
int width = (*siSprite)->GetWidth();
int heig = (*siSprite)->GetHeight();
TMP.CreateRectRgn(x1,y1,x1+width,y1+heig);
//如果图片被点击 //这里我们判断鼠标是否在图片的范围区域内
if(TMP.PtInRegion(point))
{
m_activebitamp = &(*siSprite);
m_PressFlag = 1;
(*m_activebitamp)->SetPressPt(point);
TMP.DeleteObject();
break;
}
}
CDialogEx::OnLButtonDown(nFlags, point);
}
void CDemoDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_PressFlag =0;
if(m_GraphMoveFlag)
{
int offsetX,offsetY;
offsetX=point.x-(*m_activebitamp)->GetPressPt().x;
offsetY=point.y-(*m_activebitamp)->GetPressPt().y;
POINT m_nowPt;
m_nowPt = (*m_activebitamp)->GetIniPos();
m_nowPt.x += offsetX;
m_nowPt.y += offsetY;
(*m_activebitamp)->SetInitPos(m_nowPt);
//在这里重绘窗口上的所有图片(不包括背景)
CDC *pDC = this->GetDC();
DrawBitmap(pDC->m_hDC);
m_GraphMoveFlag =0;
}
CDialogEx::OnLButtonUp(nFlags, point);
}
void CDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_PressFlag)
{
m_GraphMoveFlag = 1;
}
CDialogEx::OnMouseMove(nFlags, point);
}
我单步调试的时候发现鼠标点击之后图片的新位置计算都没有错误,可是图片就是不发生变化
跪求高手指点!!!!!