首先创建一个对话框模板资源并生成一个类
重载对话框的WM_WINDOSPOSCHANGED消息,并在消息响应函数里添加如下代码:
void CChangeDlg::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos)
{
CDialog::OnWindowPosChanged(lpwndpos);
// TODO: Add your message handler code here
CPoint point;
//获得屏幕的X,Y坐标
point.x = ::GetSystemMetrics(SM_CXSCREEN);
point.y = ::GetSystemMetrics(SM_CYSCREEN);
//获得所创建的对话框窗口坐标
CRect rect;
GetWindowRect(&rect);
//判断窗口位置是否超出屏幕底边是则改变窗口大小
if (rect.bottom >= point.y)
{
MoveWindow(0, 600, point.x, point.y - 300);
m_bDocked = true;
}
else if (rect.bottom < point.y) //当窗口底边小于屏幕则自动缩小
{
if (m_bDocked) //m_bDocked来判断之前是否是停靠状态 否则不改变大小
{
MoveWindow(m_rcMove.left + ::GetSystemMetrics(SM_CXSCREEN) / 5 * 2 , m_rcMove.top, 200, 300);
m_bDocked = false;
}
}
}