如何禁用双击窗体图标关闭窗体

本文介绍了一个使用 C# 在 .Net 环境下通过 WndProc 方法拦截 Win32 消息的具体实现案例,主要关注如何处理系统菜单、标题栏、系统按钮等元素上的鼠标事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题来自论坛提问,.Net由于对WindowsAPI的透明度增强,很多Winform开发者都不太了解经典的win32消息方面的知识。

所有窗体上的鼠标反映都可以用WndProc拦截,除了系统菜单、标题栏、系统按纽还包括客户区。

  1. using System;
  2. using System.Windows.Forms;
  3. using System.Runtime.InteropServices;
  4. namespace WindowsApplication1
  5. {
  6. public partial class Form1:Form
  7. {
  8. public Form1()
  9. {
  10. InitializeComponent();
  11. }
  12. [DllImport( "user32.dll" )]
  13. private static extern IntPtrGetSystemMenu(IntPtrhWnd, bool bRevert);
  14. protected override void WndProc( ref Messagem)
  15. {
  16. if (m.Msg==0x112)
  17. {
  18. if (m.WParam.ToInt32()==61539||m.WParam.ToInt32()==61587)
  19. {
  20. Console.WriteLine(m.WParam);
  21. return ;
  22. }
  23. }
  24. base .WndProc( ref m);
  25. }
  26. }
  27. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值