拖动无边框窗体

Posted on   努力成长静待花开  阅读(227)  评论(0编辑  收藏  举报

实现效果:

  

知识运用:

   API中的两个函数  ReleaseCapture和SendMessage

1
2
[DllImport("user32")]    //用于向指定的窗体发送windows消息
public static extern bool SendMessage(IntPtr hwdn,int wMsg,int mParaam,int IParam);

  

实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
 
[DllImport("user32")]
public static extern bool ReleaseCapture();
[DllImport("user32")]
public static extern bool SendMessage(IntPtr hwdn,int wMsg,int mParaam,int IParam);
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    ReleaseCapture();   //用来释放当前线程中某个窗口捕获的光标
    SendMessage(this.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0); //向Windows发送拖动窗体的消息
}

 

编辑推荐:
· 自定义通信协议——实现零拷贝文件传输
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
阅读排行:
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手
点击右上角即可分享
微信分享提示