Application.AddMessageFilter(IMessageFilter) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Aggiunge un filtro messaggi per il monitoraggio dei messaggi di Windows al momento dell'indirizzamento alle rispettive destinazioni.
public:
static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
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)
Parametri
- value
- IMessageFilter
Implementazione dell'interfaccia IMessageFilter che si vuole installare.
Esempio
Nell'esempio di codice seguente viene creato un filtro di messaggio denominato TestMessageFilter. Questo filtro blocca tutti i messaggi relativi al pulsante del mouse sinistro. Prima di poter usare un filtro messaggi, è necessario fornire un'implementazione per l'interfaccia IMessageFilter .
// 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
Commenti
Usare un filtro di messaggio per impedire la generazione di eventi specifici o per eseguire operazioni speciali per un evento prima che venga passato a un gestore eventi. I filtri dei messaggi sono univoci per un thread specifico.
Per impedire l'invio di un messaggio, l'istanza value del parametro passata a questo metodo deve eseguire l'override PreFilterMessage del metodo con il codice per gestire il messaggio. Il metodo deve restituire false.
Attenzione
L'aggiunta di filtri di messaggio alla pompa dei messaggi per un'applicazione può ridurre le prestazioni.