无标题窗口的拖放怎么实现?

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3839/3839309.xml?temp=.307171
      

  2.   

    private const int WM_NCLBUTTONDOWN = 0xA1;
    private const int HTCAPTION = 2;
    [DllImport("user32.dll", EntryPoint="SendMessageA")]
    private static extern int SendMessage (int hwnd, int wMsg, int wParam, int lParam);
    [DllImport("user32.dll")]
    private static extern int ReleaseCapture ();
    private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    //为当前的应用程序释放鼠标捕获
    ReleaseCapture();
    //发送消息,让系统误以为你在标题拦上按下鼠标
            SendMessage((int)this.Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
    }
      

  3.   

    lucbesson(女娃哈哈) 正解。
      

  4.   

    private Point mouse_offset;
    private void frmMain_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    mouse_offset = new Point(-e.X, -e.Y);
    } private void frmMain_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Left)
    {
    Point mousePos = Control.MousePosition;
    mousePos.Offset(mouse_offset.X, mouse_offset.Y);
    Location = mousePos; 
    }
    }