码迷,mamicode.com
首页 > 其他好文 > 详细

无边框对话框的缩放

时间:2014-10-12 00:55:27      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   sp   div   on   log   代码   

1、        添加WM_NCHITTEST消息 

2、        设置对话框属性System Menu 为False。

如果不设置添加完代码以后对话框边框出现了箭头,但是窗口大小是固定的。

3、        添加代码

 

LRESULT CDialogZoomDlg::OnNcHitTest(CPoint point)

{

         // TODO:  在此添加消息处理程序代码和/或调用默认值

         //无边框缩放

         //这里是防止在最大化的时候能缩放窗口(在没有WS_THICKFRAME风格的情况下需要这样处理下)

         if (IsZoomed())

         {

                   return CDialog::OnNcHitTest(point);

         }

 

         CRect rect;

         GetClientRect(&rect);

         CPoint pt = point;

         ScreenToClient(&pt);

         static int nFrame = 4; // 窗口边框的宽度

         rect.DeflateRect(nFrame, nFrame);

         CRect RectResize(rect.right - 20, rect.bottom - 20, rect.right, rect.bottom);

         // CRect rectTitle(nFrame,nFrame, rect.right - nFrame,CAPTION_HEIGHT);

         if (!rect.PtInRect(pt))

         {

                   if (pt.x <= nFrame && pt.y >= rect.bottom - nFrame)

                   {

                            return HTBOTTOMLEFT;

                   }

                   else if (pt.x <= nFrame && pt.y <= nFrame)

                   {

                            return HTTOPLEFT;

                   }

                   else if (pt.x >= rect.right - nFrame && pt.y <= nFrame)

                   {

                            return HTTOPRIGHT;

                   }

                   else if (pt.x >= rect.right - nFrame && pt.y >= rect.bottom - nFrame)

                   {

                            return HTBOTTOMRIGHT;

                   }

                   else if (pt.x <= nFrame)

                   {

                            return HTLEFT;

                   }

                   else if (pt.y <= nFrame)

                   {

                            return HTTOP;

                   }

                   else if (pt.y >= rect.bottom - nFrame)

                   {

                            return HTBOTTOM;

                   }

                   else if (pt.x >= rect.right - nFrame)

                  {

                            return HTRIGHT;

                   }

         }

         else if (RectResize.PtInRect(pt))

         {

                   return HTBOTTOMRIGHT;

         }

         // else if (rectTitle.PtInRect(pt))

         // {

         // return HTCAPTION;

         // }

         else

         {

                   return HTCLIENT;

         }

 

 

         return CDialog::OnNcHitTest(point);

}

 

只加这么多,就可以缩放。四个方向均可以。

 

无边框对话框的缩放

标签:style   blog   color   io   sp   div   on   log   代码   

原文地址:http://www.cnblogs.com/leadtheway/p/4019961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!