//SetWindowLong(new HandleRef(this, this.Handle), -16, GetWindowLong(new HandleRef(this, this.Handle), -16) | WS_SYSMENU); //这里加上这段后 下面的case WM_NCHITTEST:就没反应了 请问这儿怎么写      
这段有问题  

解决方案 »

  1.   


    [DllImport("user32.dll")] 
      public static extern bool ReleaseCapture(); 
    [DllImport("user32.dll")] 
      public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); 
      public const int WM_SYSCOMMAND = 0x0112; 
      public const int SC_MOVE = 0xF010; 
      public const int HTCAPTION = 0x0002; 
     private void button1_MouseDown(object sender, MouseEventArgs e)
            {
                ReleaseCapture(); 
    SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);         }
    这是无边框拖动
      

  2.   

    发的东西很好 很完整  放到VS2008里新建一个窗体就行了 就能看到是什么意思  就是
    //SetWindowLong(new HandleRef(this, this.Handle), -16, GetWindowLong(new HandleRef(this, this.Handle), -16) | WS_SYSMENU); //这里加上这段后 下面的case WM_NCHITTEST:就没反应了 请问这儿怎么写      
    这段有问题
    把注释去掉  就不能响应case WM_NCHITTEST: 的功能了
      

  3.   

    hhc123  你的我试过了  不好用  
     private void Form12_MouseDown(object sender, MouseEventArgs e)
            {
                ReleaseCapture();
                SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }