ホーム > タグ > Windows7

Windows7

HSPでマルチタッチ入力

メインマシンの環境をWindows7(x64)に移行中です。
せっかくなので、マルチタッチに対応したプログラムを作ってみました。

  multitouch100115.zip (94.3 KiB)

HSP3のスクリプト3つと、実行ファイル1つが入ってます。
APIの資料としては、だいたいこのあたりを参考にしました。
http://msdn.microsoft.com/en-us/library/dd317323(VS.85).aspx

基本的に覚えておくべきコトは、タッチ入力の取得方法は2種類あるというコト。

  • ジェスチャー(Gesture) – パンやズームなど指を動かした内容を得る
  • タッチ(Touch) – ポイントされた座標すべて得る
  • そしてこれは、どちらか1つを選ばなくてはならないです。

    RegisterTouchWindow hwnd, 0 ; タッチウインドウ登録

    RegisterTouchWindow関数で、登録するとタッチ。
    そうでないと、ジェスチャーのメッセージが送られてきます。
    multitouch1.hspは、ジェスチャーのメッセージ(WM_GESTURE)を受け取って表示するサンプルです。

    タッチ入力を解析して、ZOOM、PAN、TWO FINGER TAPなどのメッセージを送ってきます。
    (ROTATEはこのままだと受け取らないです)
    メッセージの詳細は、GESTUREINFO構造体に入っています。
    サンプルでは、X,Y座標やArgumentsをとりあえず取り出していますが、詳しい内容は以下で解説されています。
    http://msdn.microsoft.com/en-us/library/dd353232(VS.85).aspx

    multitouch2.hspは、タッチのメッセージ(WM_TOUCH)を受け取って表示するサンプルです。
    自力で入力をすべて解析したい人や、とりあえずタッチされた座標を知りたい時はこちらを使います。
    サンプルでは、タッチされたX,Y座標を取り出していますが、詳しい内容はTOUCHINPUT構造体に入っています。
    http://msdn.microsoft.com/en-us/library/dd317334(VS.85).aspx

    さらに、multitouch3.hsp(及びexe)は、タッチされた座標に点を描画していく簡易的なペイントソフトの例。

    タッチ入力には、TOUCHEVENTF_DOWN(押された)、TOUCHEVENTF_MOVE(動かした)、TOUCHEVENTF_UP(離された)の状態があり、
    本来ならば動かした時に線をつないでいくべきですが、今は押したり動かしたりした点にとりあえず●を描画しています。

    他の環境で試していないので、不具合があったらすみません。
    こちらのモニタ(Acer T230H)では、同時に2点までしか入力できないのと、わりと誤差があったりしてちょっと厳しいですが、一応動作しています。
    あと、ジェスチャーのメッセージが得られるまでラグが少しあって、iPhoneとかと比べると反応が悪い気がします。
    これもデバイスの問題なのか、OS側のものなのか不明です。

    タッチディスプレイを使ってみた感想としては、垂直の画面に対しては腕が疲れるということがよくわかって、マイノリティ・リポートのような未来は来ないのかも。
    あと、何も考えずに画面を拭こうとしたら、拭いた場所すべてタッチとみなされて大変なことになりました(^^;) 拭く時は電源切らないといけないのかな…。
    でも、展示とかプレゼンテーション用には良い機能だと思いますし、ゲームなどでの応用も可能性が広がるので普及はして欲しいところです。

      このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをはてなブックマークに追加

    • Comments: 1
    • Trackbacks: 0

    Home > Tags > Windows7

    Search
    Feeds
    Meta

    Return to page top