zoukankan      html  css  js  c++  java
  • 窗口拖动功能,以及拖动时卡的解决方案

    const int WM_NCLBUTTONDOWN = 0xA1;  
    const int HT_CAPTION = 0x2;  
    [DllImport("user32.dll")]  
    static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);  
      
    private void Form2_MouseDown(object sender, MouseEventArgs e)  
    {  
        if (e.Button == MouseButtons.Left & this.WindowState == FormWindowState.Normal)  
        {  
            // 移动窗体   
            this.Capture = false;  
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);  
        }  
    }  
    const int WM_NCLBUTTONDOWN = 0xA1;
    const int HT_CAPTION = 0x2;
    [DllImport("user32.dll")]
    static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    
    private void Form2_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left & this.WindowState == FormWindowState.Normal)
        {
            // 移动窗体
            this.Capture = false;
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
        }
    }
    
    
    
     
    
    

    实验证明这个方法是比较好的,它模拟了点击窗口标题栏进行拖动的动作 

    我以前用过的方法是设置窗体的Location的方法,很卡,而且快速拖动会不同步

     
    Point m_oldpoint;  
    bool m_mouse_is_down = false;  
      
    private void pictureBox_title_MouseDown(object sender, MouseEventArgs e)  
    {  
        m_oldpoint = MousePosition;  
    }  
      
    private void pictureBox_title_MouseMove(object sender, MouseEventArgs e)  
    {  
        if ((e.Button != MouseButtons.Left) || (MousePosition == m_oldpoint))  
        {  
            return;  
        }  
        this.Location = new Point(this.Location.X + MousePosition.X - m_oldpoint.X, this.Location.Y + MousePosition.Y - m_oldpoint.Y);  
        m_oldpoint = MousePosition;  
    }  

  • 相关阅读:
    使用FileReader在浏览器读取预览文件(image和txt)
    移动端Vue图片获取,压缩,预览组件-upload-img(H5+获取照片,压缩,预览)
    文件(图片)转base64
    Vue单页面应用打包app处理返回按钮
    hbuilder/hbuilderx 无法检测到模拟器
    不启动AndroidStudio直接启动其模拟器
    ES6,箭头函数 (=>)注意点
    ES6,扩展运算符
    strcmp使用注意
    android11 gc5035前置摄像头当作后置使用左右镜像问题
  • 原文地址:https://www.cnblogs.com/diulela/p/2544593.html
Copyright © 2011-2022 走看看