トップ回答者
クリック判定について

質問
回答
-
ダブルクリックを行ったと判定されたらWM_LBUTTONDBLCLKがくるわけですから、
WM_LBUTTONDOWNがきてから、GetDoubleClickTime()で取得できる時間以上
WM_LBUTTONDBLCLKがこなかったらシングルクリックとみなすことができます。
注意しなければならないのは、CS_DBLCLKSが設定されたクラスのウィンドウでないと、
WM_LBUTTONDBLCLKがこないということと、
GetDoubleClickTime()で取得できる時間はシステムがこの間隔以内でクリックされたら
ダブルクリックとみなす、という時間のことなので、少し余裕をもってみた方がいいだろうと
いうことです。- 回答としてマーク ひろ太 2009年11月18日 4:53
すべての返信
-
ダブルクリックを行ったと判定されたらWM_LBUTTONDBLCLKがくるわけですから、
WM_LBUTTONDOWNがきてから、GetDoubleClickTime()で取得できる時間以上
WM_LBUTTONDBLCLKがこなかったらシングルクリックとみなすことができます。
注意しなければならないのは、CS_DBLCLKSが設定されたクラスのウィンドウでないと、
WM_LBUTTONDBLCLKがこないということと、
GetDoubleClickTime()で取得できる時間はシステムがこの間隔以内でクリックされたら
ダブルクリックとみなす、という時間のことなので、少し余裕をもってみた方がいいだろうと
いうことです。- 回答としてマーク ひろ太 2009年11月18日 4:53
-
>左ボタンを押された時は、WM_LBUTTONDOWN
>左ボタンを離された時は、WM_LBUTTONUP がきます。>それは分かるのですが、私が知りたいのはシングルクリックされたかどうかの判定方法です。一般的にどのようにするものなのでしょうか?
従って「シングルクリック」という言葉を使用する人がその意味を定義しなければなりません。
一般にあるウインドウのある「領域」内でDOWNが発生し、当該「領域」内のDOWNされた点の
近傍でUPが発生したとみなせる場合に「シングルクリック」といえるかもしれませんが、
「ドラッグ」動作等との切り分けをしなければならない場合が想定され、それほど単純ではありません。
DOWNのみUPのみのきっかけだけでコードするのが気に入らない場合は
hiro-taさんの好みにコードすればよいと思います。