zoukankan      html  css  js  c++  java
  • 无边框窗口实现拖拉效果

     实现效果需要处理以下这三个消息:

    WM_NCHITTEST  WM_SETCURSOR  WM_NCLBUTTONDOWN 

    UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point)
    ...{
     // TODO: 在此添加消息处理程序代码和/或调用默认值
     CRect rect;
     CRect rect1;
     GetWindowRect(&rect);
     rect1 = rect;
     rect1.DeflateRect(10, 10, -10, -10);
     rect1.NormalizeRect();

     if(point.x <= rect.left+3)
      return HTLEFT;
     else if(point.x >= rect.right-3)
      return HTRIGHT;
     else if(point.y <= rect.top+3)
      return HTTOP;
     else if(point.y >= rect.bottom-3)
      return HTBOTTOM;
     else if(point.x <= rect.left+10 && point.y <= rect.top+10)
      return HTTOPLEFT;
     else if(point.x >= rect.right-10 && point.y <= rect.top+10)
      return HTTOPRIGHT;
     else if(point.x <= rect.left+10 && point.y >= rect.bottom-10)
      return HTBOTTOMLEFT;
     else if(point.x >= rect.right-10 && point.y >= rect.bottom-10)
      return HTBOTTOMRIGHT;
     else if(!rect.IsRectEmpty())
     {
      LRESULT uRet = CWnd::OnNcHitTest(point);
      uRet = (uRet == HTCLIENT) ? HTCAPTION : uRet;
      return uRet;
     }
     else
     {
      return CWnd::OnNcHitTest(point);
     }
        return 0;
    // return CWnd::OnNcHitTest(point);
    }


    BOOL CXXXDlg::OnSetCursor(HWND hWnd, UINT nHitTest, UINT message)
    ...{
        if(nHitTest == HTCAPTION || nHitTest == HTSYSMENU ||
           nHitTest == HTMENU || nHitTest == HTCLIENT)
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
       }
       else if(nHitTest == HTTOP || nHitTest == HTBOTTOM)
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));
       }
       else if(nHitTest == HTLEFT || nHitTest == HTRIGHT)
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));
       }
       else if(nHitTest == HTTOPLEFT || nHitTest == HTBOTTOMRIGHT)
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));
       }
       else if(nHitTest == HTTOPRIGHT || nHitTest == HTBOTTOMLEFT)
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));
       }
       else
       ...{
           SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
        }
    }



    void CEditWnd::OnNcLButtonDown(UINT nHitTest, CPoint point)
    {
     // TODO: 在此添加消息处理程序代码和/或调用默认值
       if(nHitTest == HTTOP)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTBOTTOM)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTLEFT)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_LEFT, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTRIGHT)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_RIGHT, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTTOPLEFT)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTTOPRIGHT)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPRIGHT, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTBOTTOMLEFT)
           SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMLEFT, MAKELPARAM(point.x, point.y));
       else if(nHitTest == HTBOTTOMRIGHT)
           SendMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMRIGHT, MAKELPARAM(point.x, point.y));
       else if(nHitTest==HTCAPTION)
      SendMessage(WM_SYSCOMMAND, SC_MOVE | 4, MAKELPARAM(point.x, point.y));
     //CWnd::OnNcLButtonDown(nHitTest, point);
    }


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mynamelj/archive/2006/12/16/1445567.aspx

  • 相关阅读:
    ensp实验:使用Serial接口
    1146
    Navicat连linux上mysql数据库报错can't connect to mysql server ... 10060
    Bug 23572982,Oracle19c新建pdb受限模式,SYNC PDB FAILED WITH ORA-959 DURING 'CREATE USER
    内核参数限制导致无法su切换登录用户
    模拟测试恢复redhat7.5系统权限
    Oracle-OGG,双向同步过滤OGG自身用户的DML失效,如何处理?
    OGG-Oracle同步Sequence
    Scalable Sequences 学习测试
    OGG-DDL同步报错OGG-00516 ORA-12991: column is referenced in a multi-column constraint]
  • 原文地址:https://www.cnblogs.com/carl2380/p/1924647.html
Copyright © 2011-2022 走看看