今天突然想動手搞個桌面小程序,類似便利貼那樣無邊框又能支持拖動,忘了怎麼實現,翻找了下以前的筆記,幸好還在,是通過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);// 向窗體發送消息