这个问题来自论坛提问,.Net由于对WindowsAPI的透明度增强,很多Winform开发者都不太了解经典的win32消息方面的知识。
所有窗体上的鼠标反映都可以用WndProc拦截,除了系统菜单、标题栏、系统按纽还包括客户区。
- using System;
- using System.Windows.Forms;
- using System.Runtime.InteropServices;
- namespace WindowsApplication1
- {
- public partial class Form1:Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- [DllImport( "user32.dll" )]
- private static extern IntPtrGetSystemMenu(IntPtrhWnd, bool bRevert);
- protected override void WndProc( ref Messagem)
- {
- if (m.Msg==0x112)
- {
- if (m.WParam.ToInt32()==61539||m.WParam.ToInt32()==61587)
- {
- Console.WriteLine(m.WParam);
- return ;
- }
- }
- base .WndProc( ref m);
- }
- }
- }
本文介绍了一个使用 C# 在 .Net 环境下通过 WndProc 方法拦截 Win32 消息的具体实现案例,主要关注如何处理系统菜单、标题栏、系统按钮等元素上的鼠标事件。
1644

被折叠的 条评论
为什么被折叠?



