这个问题来自论坛提问,.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 IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
- protected override void WndProc( ref Message m)
- {
- if (m.Msg == 0x112)
- {
- if (m.WParam.ToInt32() == 61539 || m.WParam.ToInt32() == 61587)
- {
- Console.WriteLine(m.WParam);
- return ;
- }
- }
- base .WndProc( ref m);
- }
- }
- }