Csharp/C Sharp/Windows/Message

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>