2011-01-10 2 views
1

사용자가 화면을 터치했다는 것을 알리는 모든 windows 메시지를 가져 오려고합니다. 이 버튼은 버튼을 제외한 모든 곳에서 작동합니다. 사용할 수없는 컨트롤을 클릭하면 응용 프로그램에 메시지가 표시되지 않는 것 같습니다.Windows CE의 .NET CF - 시스템 메시지 필터링 문제

나는 필터링 메시지를 OpenNetCF 응용 프로그램 2 클래스를 사용하고 있습니다 :이 로그 파일에

public bool PreFilterMessage(ref Microsoft.WindowsCE.Forms.Message m) 
    { 
     log.DebugFormat("windows message {0} - 0x{0:X}", m.Msg); 
     if (m.Msg == 0x0201 || m.Msg == 0x8001 || m.Msg == 0x0005) 
     {     
      return this.ResetPowerManager();  
     } 

     return false; 
    } 

:

Application2.AddMessageFilter(Device.PowerManager);
Application2.Run(new MainForm());

PowerManager 클래스는 다음 (의 IMessageFilter 인터페이스에서 요구하는) 방법을 포함 비활성화 된 버튼을 클릭하면 Windows 메시지가 표시되지 않습니다. 나는 이것이 어떻게 가능하며 어떻게이 메시지를 얻을 수 있는지 궁금합니다.

답변

1

이 시나리오에서는 Win32 API 함수 SetCapture을 사용할 수 있습니다. 주 양식의 핸들을 전달하면 ReleaseCapture에 전화 할 때까지 모든 마우스 이벤트를 캡처합니다.

관련 문제