2011-01-15 36 views
1

私はタッチスクリーンアプリケーションを開発しています。アプリケーションの目的は、エンドユーザがWindows7のタッチスクリーンデバイス上の画面上で垂直方向のタッチ移動(指で垂直線)を行う場合です。アクティブウィンドウはすべて最小限に抑える必要があります(デスクトップの表示など)。私の質問は、どのようにデスクトップ上でアクティブなすべてのウィンドウで起こるすべてのWM_TOUCHメッセージを処理できます。私はすべてのWM_TOUCHメッセージを取ることができる窓フックがありません。私は、WM_TOUCHメッセージを抽出することができてもうまくいかないことを願ってWH_GETMESSAGEを使用しようとしましたが、WH_MOUSE_LLを使用しようとしましたが、すべてのマウスイベントが発生しました。すべてのウィンドウからWM_TOUCHメッセージを取得し、自分のAPPで処理しています

場合(。(GetMessageExtraInfo()ToInt32()& MOUSEEVENTF_FROMTOUCH)== 0xFF515700) { textBoxLog.AppendText(「asdada:私は、マウスのメッセージが、このコードで開始されたところから見ることができると機能GetMessageExtraInfoがあります"); } これが真の場合、メッセージはTouchScreenデバイスによって開始されます。これは、私のアプリケーション(私のアプリケーションのアクティブなウィンドウ)から送信されたメッセージでのみ動作しますが、私のアプリケーションウィンドウの外にある他のウィンドウからのマウスのメッセージでは動作しません。私はしばらくの間、この主題を研究しており、私はまだ答えを得ることができません。だから誰か私のアプリにすべてのWM_TOUCHメッセージを取得する方法を知っている場合は、私のアプリに応答してくださいしてください。

Mihail

答えて

1

グローバルメッセージprocをフックする必要があります。あなたはすべてのメッセージを最初に取得するこの方法です。あなたのwndprocはあなたのウィンドウがアクティブなときだけ "アクティブ"なので、これをやっている方法はうまくいきません。

グローバルにしたいメッセージだけを処理し、必要なロジックに応じてそれらを通過させるか、または切断することを許可する新しいwndprocを作成します。

http://msdn.microsoft.com/en-us/library/ms644990%28v=vs.85%29.aspx

+0

私はこのプロジェクトのコードを使用しています。http://www.codeproject.com/KB/cs/globalhook.aspx version2マウスとキーボードのフックのために働いています。WH_GETMESSAGEに登録しようとすると私のアプリを動かすことはイベントでは起きません。私が試したもう一つの事は、私がマウスのフックから取得するマウスイベントを取得するときです。GetMessageExtraInfo()を使用してメッセージを確認します。これはタッチデバイスからです。私のアプリケーションのメッセージのメッセージはOKですが、画面の外側にマウスのメッセージが表示されますが、これは現在touch device.Anyのコード例から作成されています。どのようにiを構築できますか? –

+0

前にそのコードを使用していないため、余分なものを(私はglobalhookコードがそうすると思います)します。私が言うことができるのは、あなたのWM_コードが正しいことを確認することだけです。マウスとキーボードのために働いている場合は、互換性に問題がなければ、タッチ用に動作するはずです。 – AbstractDissonance

1

similiar discussion on Windows DevCenterによれば、これは可能ではないようです。

ボブが述べたようにWindows 7の上でグローバルにタッチ入力をキャッチする良い方法はありませんが、窓がする必要があります特にタッチ入力を受信するために登録されており、これは他のアプリケーションのウィンドウでは安全に実行できるものではありません。

関連する問題