void CDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
SetCapture();
m_bHold = TRUE;
RECT rect;
GetWindowRect(&rect);
ClientToScreen(&point);
m_offset = point - CPoint(rect.left, rect.top); //偏移是屏幕坐标
}
void CDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bHold)
{
ClientToScreen(&point);
m_pt = point - m_offset;
SetWindowPos(0, m_pt.x, m_pt.y, 0, 0, SWP_NOSIZE| SWP_NOZORDER);
}
}
void CDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bHold = FALSE;
ReleaseCapture();
}
成员变量
BOOL m_bHold 是否按下左键
CSize m_offset 左键按下时鼠标与窗口左上角的位置偏移