zoukankan      html  css  js  c++  java
  • vc ++ 实现无标题拖动

    WM_LButtonDown 消息响应处理 // 鼠标左键

    void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point) 
    {
     PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
     CDialog::OnLButtonDown(nFlags, point);
    }

    按窗体任何位置都可移动窗体!-------------------------------------------

    -----在无标题栏的窗体上右键功能实现:↓↓

    WM_RButtonDown 消息响应处理 // 鼠标右键

    void CDlgDlg::OnRButtonDown(UINT nFlags, CPoint point) 
    {
     CMenu menu,*sub;
     menu.LoadMenu(IDR_MENU1);  ////加载菜单
        sub=menu.GetSubMenu(0);
     ClientToScreen(&point);
     sub->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
     CDialog::OnRButtonDown(nFlags, point);
    }

    -----------------------------------------------------------------------------------------------------------------

    对于无标题栏的对话框,用鼠标移动它的简单方法为:对消息WM_NCHITTEST进行处理,然后做鼠标位置的判断,如果鼠标位置在要移动窗口的客户区,则返回为鼠标在标题栏的信号,也就是欺骗windows,让它误认为你在点击标题栏,于是,你就可以正常拖动窗口了。

    WM_NCHITTEST  消息响应处理

    让窗口部分区域起移动功能的作用!

    函数GetWindowPlacement得到当前窗口在屏幕上的位置.

    这个函数的参数类型为WINDOWPLACEMENT结构。原型为
    typedef struct tagWINDOWPLACEMENT {     /* wndpl */
       UINT  length;
       UINT  flags;
       UINT  showCmd;
       POINT ptMinPosition;
       POINT ptMaxPosition;
       RECT  rcNormalPosition;
    } WINDOWPLACEMENT;
    其中,第六个变量rcNormalPosition为窗口正常显示时的位置

    UINT CTimeWakeDlg::OnNcHitTest(CPoint point)
    {
           UINT hit=CDialog::OnNcHitTest(point);
           if(hit==HTCLIENT)
           {
                  WINDOWPLACEMENT winplace;
                  GetWindowPlacement(&winplace);
                  int xp=winplace.rcNormalPosition.left;
                  int yp=winplace.rcNormalPosition.top;
     
                  if((point.x>xp)&&(point.x<xp+50)&&(point.y>yp)&&(point.y<yp+30))
                         return HTCAPTION;
                  else 
                         return hit;
           }
           else
                  return hit;
    }       

    好了,再在左上角画个图之类的,就更明显漂亮喽

  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/shengshuai/p/wbttd.html
Copyright © 2011-2022 走看看