用鼠标拖动图片移动

 

 

拖动图片要响应3个鼠标消息

OnLButtonDown,OnLButtonUp,OnMouseMove

 

左键按下时:

                         要判断是否在图像内部按下的,若是捕获图片

 

左键释放时:

                         释放图片

鼠标移动时: 根据鼠标移动,实时重绘图片

 

为此,设三个类变量:

CPoint pt;//  保存图片起始坐标

BOOL bcapture; //图片是否捕获

CSize offsetsize;  //鼠标与图片起始点的偏移量

 

首先是初始化:

 

CMovePictureView::CMovePictureView()
{
	// TODO: add construction code here
	bcapture=FALSE;
	pt.x=0;
	pt.y=0;
	offsetsize.cx=0;
	offsetsize.cy=0;
}

 

然后是响应OnLButtonDown消息

void CMovePictureView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CRect selrc(pt,size);
	CClientDC dc(this);
	OnPrepareDC(&dc);
	CRgn rgn;
	rgn.CreateRectRgnIndirect(&selrc);
	if(rgn.PtInRegion(point))
	{
		SetCapture();
		bcapture=TRUE;
		CPoint rcpt(pt);
		offsetsize=point-rcpt;
		SetCursor(LoadCursor(NULL,IDC_CROSS));
	}
	CScrol

你可能感兴趣的:(MFC-没饭吃,图形图像处理)