다음을 통해 공유


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

주의

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

적용 대상