Winform无标题窗体移动方法

需添加using System.Runtime.InteropServices

 

/*=================================================================*/

函数功能:该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。

  函数原型:BOOL ReleaseCaptureVOlD

  参数:无。

  返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetlastError函数。

  备注:应用程序在调用函数SetCaPture之后调用此函数。

Windows 95:调用ReleaseCapture会引起失去鼠标捕获的窗日接收一个WM_CAPTURECHANGED消息

/*=================================================================*/

 

//窗体移动属性

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

 

 

在窗体的MouseDown事件中,调用以上二个方法,如下:

 

#region 窗体移动事件

/// <summary>

/// 窗体移动事件

/// </summary>

private void Login_MouseDown(object sender, MouseEventArgs e)

{

     if (e.Button == MouseButtons.Left)//只有左键才能移动

     {

          if (e.Y < 30)//只有最上面那行才能实现移动

          {

              ReleaseCapture();//捕获鼠标

              //发送消息

              SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);

      }

}

#endregion

posted @ 2010-08-31 10:04  ☆会飞的鱼☆  阅读(430)  评论(0编辑  收藏  举报