-
- BOOL m_bFlag = FALSE;
- CPoint m_pt;
-
- BOOL CXXButton::PreTranslateMessage(MSG* pMsg)
- {
-
- switch(pMsg->message)
- {
- case WM_LBUTTONDOWN:
- {
- m_pt = pMsg->pt;
- m_bFlag = TRUE;
- }
- break;
-
- case WM_LBUTTONUP:
- {
- m_bFlag = FALSE;
- }
- break;
-
- case WM_MOUSEMOVE:
- {
- if(m_bFlag)
- {
- int cx = pMsg->pt.x - m_pt.x;
- int cy = pMsg->pt.y - m_pt.y;
-
- CRect rc;
- GetWindowRect(&rc);
- GetParent()->ScreenToClient(&rc);
- int nWidth = rc.Width();
- int nHeight = rc.Height();
-
- rc.left += cx;
- rc.top += cy;
- rc.right = rc.left + nWidth;
- rc.bottom = rc.top + nHeight;
-
- MoveWindow(rc);
-
- m_pt = pMsg->pt;
- }
- }
- break;
-
- default:
- break;
- }
- return CButton::PreTranslateMessage(pMsg);
- }
http://blog.csdn.net/visualeleven/article/details/7177775