dポイントプレゼントキャンペーン実施中!

よろしくお願いいたします
環境 WIN98 VC++6.0 MFC にて

左シングルクリックと左ダブルクリックの両方でメッセージボックスが出るようにコードを書いたところ、左シングルクリックの時点でメッセージボックスが出るためダブルクリックを実行することが出来ません。

また、メッセージボックス以外の処理でも同様になると思うのですが、どうすればダブルクリックが実行出来るようになるのでしょうか?

A 回答 (4件)

>また、メッセージボックス以外の処理でも同様になると思うのですが、



なりません。
メッセージボックスだからです。

ダブルクリックの判定は、とある範囲の中でとある時間内に2回クリックされたかです。
メッセージボックスが表示されてフォーカスが外れた時点で判定はリセットされます。

なお、メッセージの来る順序は左のクライアント領域の場合、
WM_LBUTTONDOWN→WM_LBUTTONUP→
WM_LBUTTONDBLCLK→WM_LBUTTONUP

となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/05 19:28

シングルクリックのタイミングでメッセージボックスを表示すると、それ以降のマウスイベントはキャッチできないと思います。



どうしてもメッセージボックスを表示するなら、ダブルクリックのイベントが発生するまで、シングルクリックの処理は行わずに、
シングルクリックイベントでタイマなどを使って、数秒後にダブルクリックが発生するかをチェックする必要があります。
ダブルクリックイベントが発生したら、シングルクリック時の処理→ダブルクリック時の処理を行うことになります。
数秒間待って、ダブルクリックイベントが発生しない場合は、シングルクリックの処理だけを行います。

調査レベルだとは思いますが、この仕様は動作的にも変だと思いますよ。できれば止めた方がいいのでは・・・
    • good
    • 0
この回答へのお礼

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

調査用です。変なので止めます。

お礼日時:2003/09/05 19:30

ウィンドウクラスのスタイルにCS_DBLCLKSがないなんてことないですよね?


spy++で確認できますけど。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/05 19:29

確かダブルクリックをしたときにも”シングルクリック”+”ダブルクリック”というメッセージが飛んできていた覚えがありますねぇ


それで,私の場合の対処法ですが,
クリックのあとにしばらく待ってクリックがなければ”シングルクリック”
あればシングルクリックは無視という方法で回避していました
あまり具体的ではないので参考になるかどうかわかりませんが,アドバイスとして書いておきます
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/05 19:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!