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);// 向窗体发送消息

 

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