Application.AddMessageFilter(IMessageFilter) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Dodaje filtr komunikatów do monitorowania Windows komunikatów podczas kierowania ich do miejsc docelowych.
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)
Parametry
- value
- IMessageFilter
Implementacja interfejsu IMessageFilter , który chcesz zainstalować.
Przykłady
Poniższy przykład kodu tworzy filtr komunikatu o nazwie TestMessageFilter
. Ten filtr blokuje wszystkie komunikaty odnoszące się do lewego przycisku myszy. Aby można było użyć filtru komunikatów, należy podać implementację interfejsu 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
Uwagi
Użyj filtru komunikatów, aby zapobiec wywoływaniu określonych zdarzeń lub wykonywać specjalne operacje dla zdarzenia przed przekazaniem go do programu obsługi zdarzeń. Filtry komunikatów są unikatowe dla określonego wątku.
Aby zapobiec wysyłaniu komunikatu, value
wystąpienie parametru przekazane do tej metody musi zastąpić PreFilterMessage metodę kodem w celu obsługi komunikatu. Metoda musi zwrócić false
wartość .
Przestroga
Dodanie filtrów komunikatów do pompy komunikatów dla aplikacji może obniżyć wydajność.