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.