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;  
    }  

  • 相关阅读:
    C语言第四次博客作业嵌套循环
    C语言第六次博客作业数据类型
    C语言第五次博客作业函数
    C语言第二次博客作业分支结构
    MD5 DSA RSA 简单 区别
    关于Linux Grep命令使用的详细介绍
    最好、最智能化、最方便的Java开发软件 IntelliJ IDEA 10.5.2
    Linux Find 命令精通指南
    linux 下面递归查找
    公钥和私钥的解释
  • 原文地址:https://www.cnblogs.com/diulela/p/2544593.html
Copyright © 2011-2022 走看看