Winform - 無邊框窗體拖放移動

今天突然想動手搞個桌面小程序,類似便利貼那樣無邊框又能支持拖動,忘了怎麼實現,翻找了下以前的筆記,幸好還在,是通過WinAPI發送窗體消息來實現,特整理記錄一下作爲分享。

==========  原創作品    作者:Yokeqi    出處:博客園  ==========

1. 引入WinAPI,定義消息常量

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

2. 在需要響應拖放的地方加入以下代碼,例如Form1_MouseDown事件中添加

ReleaseCapture();    // 釋放鼠標捕獲
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);// 向窗體發送消息

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章