- ベストアンサー
左シングルクリックとダブルクリックを両方使えるようにするには?
よろしくお願いいたします 環境 WIN98 VC++6.0 MFC にて 左シングルクリックと左ダブルクリックの両方でメッセージボックスが出るようにコードを書いたところ、左シングルクリックの時点でメッセージボックスが出るためダブルクリックを実行することが出来ません。 また、メッセージボックス以外の処理でも同様になると思うのですが、どうすればダブルクリックが実行出来るようになるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>また、メッセージボックス以外の処理でも同様になると思うのですが、 なりません。 メッセージボックスだからです。 ダブルクリックの判定は、とある範囲の中でとある時間内に2回クリックされたかです。 メッセージボックスが表示されてフォーカスが外れた時点で判定はリセットされます。 なお、メッセージの来る順序は左のクライアント領域の場合、 WM_LBUTTONDOWN→WM_LBUTTONUP→ WM_LBUTTONDBLCLK→WM_LBUTTONUP となります。
その他の回答 (3)
- darksky
- ベストアンサー率66% (38/57)
シングルクリックのタイミングでメッセージボックスを表示すると、それ以降のマウスイベントはキャッチできないと思います。 どうしてもメッセージボックスを表示するなら、ダブルクリックのイベントが発生するまで、シングルクリックの処理は行わずに、 シングルクリックイベントでタイマなどを使って、数秒後にダブルクリックが発生するかをチェックする必要があります。 ダブルクリックイベントが発生したら、シングルクリック時の処理→ダブルクリック時の処理を行うことになります。 数秒間待って、ダブルクリックイベントが発生しない場合は、シングルクリックの処理だけを行います。 調査レベルだとは思いますが、この仕様は動作的にも変だと思いますよ。できれば止めた方がいいのでは・・・
お礼
回答ありがとうございます。 調査用です。変なので止めます。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
ウィンドウクラスのスタイルにCS_DBLCLKSがないなんてことないですよね? spy++で確認できますけど。
お礼
回答ありがとうございます。
- kajkaj
- ベストアンサー率13% (2/15)
確かダブルクリックをしたときにも”シングルクリック”+”ダブルクリック”というメッセージが飛んできていた覚えがありますねぇ それで,私の場合の対処法ですが, クリックのあとにしばらく待ってクリックがなければ”シングルクリック” あればシングルクリックは無視という方法で回避していました あまり具体的ではないので参考になるかどうかわかりませんが,アドバイスとして書いておきます
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。