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