1

ユーザーが画面に触れたことを示すすべての Windows メッセージを取得しようとしています。無効にすると、ボタンを除くすべての場所で機能します。無効なコントロールをクリックしても、アプリケーションは何のメッセージも表示しないようです。

メッセージのフィルタリングに OpenNetCF Application2 クラスを使用しています。

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

PowerManager クラスには、次のメソッドが含まれています (IMessageFilter インターフェイスで必要)。

    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;
    }

ログ ファイルには、無効化されたボタンをクリックしても Windows メッセージが表示されません。どうすればそれが可能で、どうすればこのメッセージを受け取ることができるのだろうと思っています。

4

1 に答える 1

1

このシナリオでは、Win32 API 関数SetCaptureを使用できます。メイン フォームのハンドルをそれに渡すと、 ReleaseCaptureを呼び出すまで、すべてのマウス イベントがキャプチャされます。

于 2011-08-19T16:04:46.960 に答える