Application.AddMessageFilter(IMessageFilter) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Добавляет фильтр сообщений для мониторинга сообщений Windows при их маршрутизации к местам назначения.
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)
Параметры
- value
- IMessageFilter
Реализация интерфейса IMessageFilter, который планируется установить.
Примеры
В следующем примере кода создается фильтр сообщений с именем TestMessageFilter
. Этот фильтр блокирует все сообщения, связанные с левой кнопкой мыши. Прежде чем использовать фильтр сообщений, необходимо предоставить реализацию 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
Комментарии
Используйте фильтр сообщений, чтобы предотвратить возникновение определенных событий или выполнить специальные операции для события перед его передачей обработчику событий. Фильтры сообщений уникальны для определенного потока.
Чтобы предотвратить отправку сообщения, экземпляр параметра, передаваемый этому методу, value
должен переопределить PreFilterMessage метод кодом для обработки сообщения. Метод должен вернуть false
.
Внимание!
Добавление фильтров сообщений в конвейер сообщений для приложения может снизить производительность.