首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

有趣的现象,大家来看看.解决方法

2012-02-14 
有趣的现象,大家来看看.在一个有图片背景的view上移动另一个图片,图片怎么会 飞来飞去 ,而不是随着鼠标

有趣的现象,大家来看看.
在一个有图片背景的view上移动另一个图片,图片怎么会 "飞来飞去 "   ,而不是随着鼠标的移动而移动.
void   CShowDIBView::OnDraw(CDC*   pDC)
{
CShowDIBDoc*   pDoc   =   GetDocument();
ASSERT_VALID(pDoc);
m_Dib.SetPalette(   pDC   );
m_Dib.Draw(   pDC,   mLeftTopPoint.x,   mLeftTopPoint.y,100,   100   );

}
void   CShowDIBView::OnLButtonDown(UINT   nFlags,   CPoint   point)  
{
if(mDibRect.PtInRect(point))
{isLButtonDown   =   true;
mStartPoint   =   point;
}
CView::OnLButtonDown(nFlags,   point);
}
void   CShowDIBView::OnLButtonUp(UINT   nFlags,   CPoint   point)  
{
isLButtonDown   =   false;
CView::OnLButtonUp(nFlags,   point);
}
void   CShowDIBView::OnMouseMove(UINT   nFlags,   CPoint   point)  
{
if(isLButtonDown)
{
mEndPoint   =   point;
int   tCx   =   mEndPoint.x   -   mStartPoint.x;//偏移量
int   tCy=   mEndPoint.y   -   mStartPoint.y;
mLeftTopPoint.x   +=   tCx;
                  mLeftTopPoint.y   +=   tCy;
mDibRect.left   =   mLeftTopPoint.x;         //图片所在区域
mDibRect.top   =   mLeftTopPoint.y;
mDibRect.right   =   mLeftTopPoint.x   +   100;
mDibRect.bottom=   mLeftTopPoint.y   +100;
Invalidate();
}
CView::OnMouseMove(nFlags,   point);
}


[解决办法]
你在Invalidate();前面加一句:
m_StartPoint = point;
就可以了。

热点排行