Application.AddMessageFilter(IMessageFilter) 메서드

정의

메시지 필터를 추가하여 Windows 메시지가 대상으로 라우팅될 때 모니터링합니다.

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해야 합니다.

Caution

애플리케이션에 대한 메시지 펌프에 메시지 필터를 추가하면 성능이 저하됩니다.

적용 대상