Csharp/C Sharp/Windows/Message
Installing a Message Filter
<source lang="csharp"> using System; using System.Windows.Forms;
public class BlockLeftMouseButtonMessageFilter : IMessageFilter {
const int WM_LBUTTONDOWN = 0x201; const int WM_LBUTTONUP = 0x202; public bool PreFilterMessage(ref Message m) { if(m.Msg == WM_LBUTTONDOWN) { Console.WriteLine("The left mouse button is down."); return true; } if(m.Msg == WM_LBUTTONUP) { Console.WriteLine("The left mouse button is up."); return true; } return false; }
}
public class MainForm : Form {
public static void Main() { MainForm MyForm = new MainForm(); BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter(); Application.AddMessageFilter(MsgFilter); Application.Run(MyForm); } public MainForm() { Text = "Message Filter Test"; }
}
</source>
Removing an Installed Message Filter
<source lang="csharp"> using System; using System.Windows.Forms;
public class BlockLeftMouseButtonMessageFilter : IMessageFilter {
const int WM_LBUTTONDOWN = 0x201; public bool PreFilterMessage(ref Message m) { if(m.Msg == WM_LBUTTONDOWN) { Console.WriteLine("The left mouse button is down."); Application.RemoveMessageFilter(this); return true; } return false; }
}
public class MainForm : Form {
public static void Main() { MainForm MyForm = new MainForm(); BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter(); Application.AddMessageFilter(MsgFilter); Application.Run(MyForm); } public MainForm() { Text = "Message Filter Removal Test"; }
}
</source>