1. 程式人生 > >MFC客戶區拖動視窗實現

MFC客戶區拖動視窗實現

思路:

總共分2步

1 在OnLButtonDown中記住滑鼠點選的位置

2 在OnMouseMove中處理視窗移動

程式碼:

void CLoginDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	m_pointLButtonDown = point;//記住點選位置
	CDialogEx::OnLButtonDown(nFlags, point);
}

void CLoginDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	if (MK_LBUTTON&nFlags)//滑鼠左鍵按下,移動視窗
	{
		//得到視窗區域
		CRect windowRect;
		GetWindowRect(&windowRect);
		//將滑鼠客戶區當前位置座標轉換為螢幕座標
		ClientToScreen(&point);
		//把當前位置轉換為客戶區原點
		point.x -= m_pointLButtonDown.x;
		point.y -= m_pointLButtonDown.y;
		//客戶區域移動到新原點
		windowRect.MoveToXY(point);
		//移動視窗
		MoveWindow(windowRect);
	}
	CDialogEx::OnMouseMove(nFlags, point);
}