今天突然想动手搞个桌面小程序,类似便利贴那样无边框又能支持拖动,忘了怎么实现,翻找了下以前的笔记,幸好还在,是通过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);// 向窗体发送消息