VC/MFC拖动窗口任意位置移动窗口
除了拖动标题栏移动窗口以外,我们也可以拖动窗口任意位置(除控件)位置而使对话框移动。
这里只讲述基于对话框的程序
- 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