伪实现停靠窗口?很拙略的办法,勉强实现!

首先创建一个对话框模板资源并生成一个类

重载对话框的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;

              }

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值