2009-12-08 2 views
1

샘플은 다음과 같습니다. 1. 'public class RichTextBoxEx : RichTextBox, IMessageFilter'클래스를 만듭니다. 2. 'public bool PreFilterMessage (ref Message m)'를 구현하십시오. 3. 컨트롤의 편집 모드로 들어가 텍스트를 입력하십시오.Internet Explorer 내에서 C# 컨트롤을 호스팅 할 때 PreFilterMessage가 호출되지 않습니다.

결과는 위에서 설명한대로입니다 ... 컨트롤이 브라우저 내에서 호스팅 될 때 'PreFilterMessage'가 호출되지 않습니다. 또한 PreTilterMessage를 제어하기위한 FullTrust 액세스를 제공함으로써 호출되지 않습니다.

+0

IMessageFilter 클래스가 자동으로 필터로 추가 된 것으로 생각하지 않았습니다. 저는 항상 Application.AddMessageFilter를 호출했습니다. 일반 WinForms에서 메시지 필터가 작동합니까? –

+0

와우, 그냥 Google에서 PreFilterMessage에 대한 검색을 했는데도이 게시물은 20 분 전에 작성되었지만 이미 결과의 상위 5 개에 있습니다. Btw, 여기에서 주제를 완전히 벗어남 :) – Stormenet

+0

다른 날 - "아, 네 질문에 대한 대답이있다. StackOverflow에있다. 잠깐만 ..." –

답변

1

모든 메시지가 PreMessageFilter 메커니즘을 통해 전달되는 것은 아닙니다. 컨트롤에 게시 된 메시지 만 필터링되므로 직접 메시지는 필터링되지 않습니다.

모든 종류의 메시지를 필터링하려면 WndProc() 함수를 재정의하십시오.