Application.AddMessageFilter(IMessageFilter) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メッセージ フィルターを追加して、ルーティング先にルーティングされる 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
を返します。
注意事項
アプリケーションのメッセージ ポンプにメッセージ フィルターを追加すると、パフォーマンスが低下する可能性があります。
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET