Application.AddMessageFilter(IMessageFilter) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Adiciona um filtro de mensagens para monitorizar as mensagens do Windows à medida que são encaminhadas para os seus 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
A implementação da IMessageFilter interface que queres instalar.
Exemplos
O seguinte exemplo de código cria um filtro de mensagens chamado TestMessageFilter. Este filtro bloqueia todas as mensagens relacionadas com o botão esquerdo do rato. Antes de poder usar um filtro de mensagens, deve fornecer uma implementação para a IMessageFilter interface.
// 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
Observações
Use um filtro de mensagens para evitar que eventos específicos sejam levantados ou para realizar operações especiais para um evento antes de este ser passado para um gestor de eventos. Os filtros de mensagens são únicos para um tópico específico.
Para evitar que uma mensagem seja despachada, a value instância de parâmetros que passa para este método tem de sobrescrever o PreFilterMessage método com o código para tratar a mensagem. O método deve devolver false.
Caution
Adicionar filtros de mensagem à bomba de mensagens de uma aplicação pode degradar o desempenho.