• ベストアンサー

左シングルクリックとダブルクリックを両方使えるようにするには?

よろしくお願いいたします 環境 WIN98 VC++6.0 MFC にて 左シングルクリックと左ダブルクリックの両方でメッセージボックスが出るようにコードを書いたところ、左シングルクリックの時点でメッセージボックスが出るためダブルクリックを実行することが出来ません。 また、メッセージボックス以外の処理でも同様になると思うのですが、どうすればダブルクリックが実行出来るようになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>また、メッセージボックス以外の処理でも同様になると思うのですが、 なりません。 メッセージボックスだからです。 ダブルクリックの判定は、とある範囲の中でとある時間内に2回クリックされたかです。 メッセージボックスが表示されてフォーカスが外れた時点で判定はリセットされます。 なお、メッセージの来る順序は左のクライアント領域の場合、 WM_LBUTTONDOWN→WM_LBUTTONUP→ WM_LBUTTONDBLCLK→WM_LBUTTONUP となります。

VitaminBB
質問者

お礼

回答ありがとうございます。

その他の回答 (3)

  • darksky
  • ベストアンサー率66% (38/57)
回答No.4

シングルクリックのタイミングでメッセージボックスを表示すると、それ以降のマウスイベントはキャッチできないと思います。 どうしてもメッセージボックスを表示するなら、ダブルクリックのイベントが発生するまで、シングルクリックの処理は行わずに、 シングルクリックイベントでタイマなどを使って、数秒後にダブルクリックが発生するかをチェックする必要があります。 ダブルクリックイベントが発生したら、シングルクリック時の処理→ダブルクリック時の処理を行うことになります。 数秒間待って、ダブルクリックイベントが発生しない場合は、シングルクリックの処理だけを行います。 調査レベルだとは思いますが、この仕様は動作的にも変だと思いますよ。できれば止めた方がいいのでは・・・

VitaminBB
質問者

お礼

回答ありがとうございます。 調査用です。変なので止めます。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

ウィンドウクラスのスタイルにCS_DBLCLKSがないなんてことないですよね? spy++で確認できますけど。

VitaminBB
質問者

お礼

回答ありがとうございます。

  • kajkaj
  • ベストアンサー率13% (2/15)
回答No.1

確かダブルクリックをしたときにも”シングルクリック”+”ダブルクリック”というメッセージが飛んできていた覚えがありますねぇ それで,私の場合の対処法ですが, クリックのあとにしばらく待ってクリックがなければ”シングルクリック” あればシングルクリックは無視という方法で回避していました あまり具体的ではないので参考になるかどうかわかりませんが,アドバイスとして書いておきます

VitaminBB
質問者

お礼

回答ありがとうございます。

関連するQ&A