MFC客戶區拖動視窗實現
阿新 • • 發佈:2019-01-10
思路:
總共分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); }