Application.AddMessageFilter(IMessageFilter) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Agrega un filtro de mensajes que controla los mensajes de Windows conforme se enrutan a sus destinos.
public:
static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
public static void AddMessageFilter (System.Windows.Forms.IMessageFilter value);
static member AddMessageFilter : System.Windows.Forms.IMessageFilter -> unit
Public Shared Sub AddMessageFilter (value As IMessageFilter)
Parámetros
- value
- IMessageFilter
Implementación de la interfaz IMessageFilter que se desea instalar.
Ejemplos
En el ejemplo de código siguiente se crea un filtro de mensaje denominado TestMessageFilter
. Este filtro bloquea todos los mensajes relacionados con el botón izquierdo del mouse. Para poder usar un filtro de mensajes, debe proporcionar una implementación para la IMessageFilter interfaz .
// Creates a message filter.
ref class TestMessageFilter: public IMessageFilter
{
public:
[SecurityPermission(SecurityAction::LinkDemand, Flags = SecurityPermissionFlag::UnmanagedCode)]
virtual bool PreFilterMessage( Message % m )
{
// Blocks all the messages relating to the left mouse button.
if ( m.Msg >= 513 && m.Msg <= 515 )
{
Console::WriteLine( "Processing the messages : {0}", m.Msg );
return true;
}
return false;
}
};
// Creates a message filter.
public class TestMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
// Blocks all the messages relating to the left mouse button.
if (m.Msg >= 513 && m.Msg <= 515)
{
Console.WriteLine("Processing the messages : " + m.Msg);
return true;
}
return false;
}
}
' Creates a message filter.
<SecurityPermission(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Public Class TestMessageFilter
Implements IMessageFilter
<SecurityPermission(SecurityAction.Demand)> _
Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) _
As Boolean Implements IMessageFilter.PreFilterMessage
' Blocks all the messages relating to the left mouse button.
If ((m.Msg >= 513) And (m.Msg <= 515)) Then
Console.WriteLine("Processing the messages : " & m.Msg)
Return True
End If
Return False
End Function
End Class
Comentarios
Use un filtro de mensajes para evitar que se generen eventos específicos o para realizar operaciones especiales para un evento antes de pasarlos a un controlador de eventos. Los filtros de mensajes son únicos para un subproceso específico.
Para evitar que se envíe un mensaje, la value
instancia de parámetro que se pasa a este método debe invalidar el PreFilterMessage método con el código para controlar el mensaje. El método debe devolver false
.
Precaución
Agregar filtros de mensajes a la bomba de mensajes para una aplicación puede degradar el rendimiento.