Application.AddMessageFilter(IMessageFilter) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ajoute un filtre de messages permettant de surveiller les messages Windows lors de leur routage vers leur destination.
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)
Paramètres
- value
- IMessageFilter
Implémentation de l'interface IMessageFilter que vous souhaitez installer.
Exemples
L’exemple de code suivant crée un filtre de messages appelé TestMessageFilter
. Ce filtre bloque tous les messages relatifs au bouton gauche de la souris. Avant de pouvoir utiliser un filtre de messages, vous devez fournir une implémentation pour l’interface 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
Remarques
Utilisez un filtre de messages pour empêcher la levée d’événements spécifiques ou pour effectuer des opérations spéciales pour un événement avant qu’il ne soit transmis à un gestionnaire d’événements. Les filtres de messages sont propres à un thread spécifique.
Pour empêcher la distribution d’un message, l’instance value
de paramètre que vous passez à cette méthode doit remplacer la PreFilterMessage méthode par le code pour gérer le message. La méthode doit retourner false
.
Attention
L’ajout de filtres de messages à la pompe de messages pour une application peut dégrader les performances.