Win32, Silverlight 3, WPF 4 の Windows 7 マルチタッチへの対応
Windows 7 の新機能にマルチタッチがあります。Win32, Silverlight 3, WPF 4 はそれぞれ Windows 7 マルチタッチに対応していますが、それぞれ特徴があるのでここでまとめます。
Win32
- WM_TOUCH メッセージは最も下位レベルのメッセージで(生のメッセージ)、複数のタッチIDと位置などが取得できます。Win32 でこのメッセージを受け取るには RegisterTouchWindow を呼び出す必要があります。
- WM_GESTURE メッセージは上位レベルのメッセージで、パン・ズーム・回転の情報を取得できます。Win32 ではデフォルトでこのメッセージを受け取れますが、RegisterTouchWindow を呼び出すと WM_TOUCH しか受け取れません、つまり WM_TOUCH と WM_GESTURE は排他です。
- Manipulation & Inertia は WM_TOUCHと組み合わせて、ManipulationEventSink を実装することによって、移動や回転の慣性や減衰の処理ができます。
- Windows 7 SDK にサンプルがあります。
Silverlight 3
- Silverlight 3 は WM_TOUCH にのみ対応します。
- マルチタッチを処理するには、UIElementのようなオブジェクトにイベントハンドラーを追加するのではなく、System.Windows.Input.Touch.FrameReported にTouchFrameEventHandler イベントハンドラーを追加します。
- そのコールバック内で、TouchFrameEventArg の GetPrimaryTouchPoint メソッドなどを使ってタッチポイントを取得します。
- DevCornerにサンプルがあります。
WPF 4
まとめるとこんな感じです。
| | WM_TOUCH | WM_GESTURE | Manip&Inertia |
| Win32 | 〇 | ◎ | 〇 |
| Silverlight 3 | 〇 | × | × |
| WPF 4(Beta1) | × (Beta2で対応) | 〇 |
Comments
Anonymous comments are disabled
About hiroyuk
マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。