除了拖動標題欄移動窗口以外,我們也可以拖動窗口任意位置(除控件)位置而使對話框移動。
這里只講述基於對話框的程序
- class c**dlg:public CDialog
- {
- //Construction
- public:
- Crect startRect; //窗口的初始位置所在的矩形
- bool isMouseDown; //鼠標是否按下
- CPoint startPoint; //鼠標按下的位置
- .......
其次添加OnLButtonDown消息響應函數
- void c**dlg::OnLButtonDown(UINT nFlags, CPoint point)
- {
- isMouseDown=true;
- startPoint = point;
- this->GetWindowRect(startRect);
- CDialog::OnLButtonDown(nFlags, point);
- }
添加OnMouseMove消息響應函數
- void c**dlg::ONMouseMove(UINT nFlags, CPoint point)
- {
- if(isMouseDown == true)
- {
- int Dx = point.x - startPoint.x;
- int Dy = point.y - startPoint.y;
- startRect.left += Dx;
- startRect.right += Dx;
- startRect.top +=Dy;
- startRect.bottom +=Dy; //獲取新的位置
- this->MoveWindow(&startRect); //將窗口移到新的位置
- }
- CDialog::OnMouseMove(nFlags, point);
- }
當釋放鼠標時不再拖動窗口,所以要添加OnLButtonUp消息響應函數
- void c**dlg::OnLButtonUp(UINT nFlags, CPoint point)
- {
- isMouseDown = false;
- //CDialog::OnLButtonUp(nFlags,Point);
- }
//轉:http://blog.csdn.net/luanwujian/article/details/9059861