HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0822
ほむWindows7 マルチタッチ入力について2解決


ほむ

リンク

2014/8/22(Fri) 02:02:51|NO.64134

WM_TOUCHのメッセージを受け取って、
HSPのウィンドウ上のボタン (button命令のボタンではない) に
タッチすると〜〜の動作をする、というようなプログラムを作ろうとしているのですが、
タッチイベントが発生した瞬間 (TOUCHEVENTF_DOWN) にメッセージを
受け取ることができません。

WM_TOUCH (TOUCHEVENTF_DOWN) を受け取るタイミングは
・タッチして、タッチしたまま指を動かした時
・タッチして、そのまま離した時
・タッチして、さらにもう1点以上のタッチがあった時
のようです。

--- HSPでマルチタッチ入力 ---
http://www.onionsoft.net/wp/archives/41
おにたまさんの multitouch3.exe でも、タッチして指を動かさずに離した場合、
触った時には点が描画されず、離したときに点が描画されるはずです。


Windowsのペン操作の プレスアンドホールド が原因だと思われるのですが、
右クリックの割り当てを解除しても円を出さないように設定することはできませんでした。

.NET Framework では、Stylus.IsPressAndHoldEnabled を False にすることで、
これを無効にし、タッチした瞬間に TOUCHEVENTF_DOWN のメッセージを受け取ることが
できるようですが、HSPから利用できるのかどうかわかりませんでした。

どうにかタッチした瞬間にメッセージを受け取りたいのですが、何かしらの方法を
ご存知の方はいませんでしょうか?


代替案として、マウスの座標が変わった時に TOUCHEVENTF_DOWN が発生したと
処理することも考えましたが、
全く同じ座標を2回タッチする可能性も考えられなくもないので、
できればこの方法は避けたいと思っています。
よろしくお願いします。



この記事に返信する


Flat

リンク

2014/8/22(Fri) 02:43:54|NO.64135

タッチパネルを持っていないので動作確認はしていないのですが、
multitouch3.hspの51行目、RegisterTouchWindow hwnd, 0の
0の部分を1〜3にして実行するとどうなるでしょうか。



ほむ

リンク

2014/8/22(Fri) 10:54:49|NO.64142

ありがとうございます。
1にしても変化が無かったようです。
2, 3に関しては、TWF_WANTPALM のフラグを設定すると、確かに 0 の時のような
動かした瞬間や離した瞬間の反応ではなく、押した時に点が描画されます。

手のひら接触の判定が有効にするとタッチしてから 100ms ほどの遅延が発生するとの
情報が多かったので、このフラグは設定しないようにしていたのですが、
実際はフラグを設定すると、無効になるんですよね…勘違いしていました;

おそらく、Flatさんのこの方法で解決できると思います。

この方法を試す前に、SetProp 関数 を使用して
プレスアンドホールドを無効にすることができました。

#uselib "user32.dll" #func SetPropA "SetPropA" sptr, sptr, sptr SetPropA hWnd, "MicrosoftTabletPenServiceProperty", 1
TWF_WANTPALM のフラグを設定するだけでは、まだ プレスアンドホールド の
円は出るままなので、こちらと組み合わせることで思っていた動作は実現できそうです。



ONION software Copyright 1997-2023(c) All rights reserved.