• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++での連続した左クリックの禁止の仕方について)

C++での連続した左クリックの禁止の仕方について

このQ&Aのポイント
  • VC++2005のWin32プロジェクトでアプリケーションを作成し、連続した左クリックを禁止する方法を探しています。
  • EnableWindow関数を使って連続した左クリックを禁止しようとしましたが、うまくいきませんでした。
  • どなたか連続した左クリックを禁止する方法をご存知でしたら教えてください。

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

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

タイマーとフラグ、あるいはタイマーとEnableWindowの組み合わせでできるんじゃないかな。 case WM_LBUTTONDOWN:   if( flg ){ flg=FALSE; SetTimer(~); } break; case WM_TIEMR: KillTimer(~); flg=TRUE; break; とか。

kono6318
質問者

お礼

ご回答ありがとうございます. SetTimer関数とWM_TIMERはすでに使用しているので,タイマ-とEnableWindowでちょっと試してみようと思います.

その他の回答 (2)

回答No.2

ああ、ごめんなさい。勘違いしていました。 クリックした1動作の中で数秒間無効にしたいということですね。 メッセージポンプはシリアルに処理されるので ここでがんばっても、このクリック時の動作が終わってしまえば、 次のクリックを処理できるようになってしまいます。 左クリックしたときの動作を別のスレッドで処理したり、 処理を自前で分割して擬似的に並列実行するようにしてあげないとフラグ制御とかしても無意味です。 あとは、 別のウィンドウでマウス操作をフックしてしまうとかも考えられるけれど 異常系で一切の操作ができなくなってしまいかねないのでやめておいた方がいいです。 クリックしたときの動作で何が数秒間も動いてるのかわからないので 対処方法はこのくらいしか思い浮かびません。 ちなみにですが、一般的にメッセージポンプを処理するときのレスポンスは一瞬で戻ってくるようにしてあげないと ユーザーからはフリーズしたように見えるので注意してください。

kono6318
質問者

お礼

>メッセージポンプはシリアルに処理されるので >ここでがんばっても、このクリック時の動作が終わってしまえば、 >次のクリックを処理できるようになってしまいます。 なるほど!そうだったんですね。勉強になります! ありがとうございます。 ちなみにクリックした際ですが、2秒間ほど音声が流れるようにしています。

回答No.1

単純にフラグ制御じゃだめなんですかね 何もしないでbreakしてしまえば無効化したのと同じはずだけど

kono6318
質問者

お礼

御回答ありがとうございます。 すみません。具体的にはどのようなフラグ制御行えば良いでしょうか? まだまだ素人で細かいところのプログラミングがよくわかっていないので、教えていただけると幸いです。

関連するQ&A