Visual C++でのダブルクリックの認識時間の変更方法と無効化方法

このQ&Aのポイント
  • Visual C++でマウスの左ボタンのダブルクリックの認識時間を設定する方法について説明します。
  • また、ダブルクリックを認識させないようにする方法についても解説します。
  • これにより、ユーザーがダブルクリックを行っても反応しないようにすることができます。
回答を見る
  • ベストアンサー

ダブルクリックの認識時間の変更、または無効の仕方

Visual C++で、マウス左のダブルクリックの認識時間の変更の仕方がわかりません。 GetDoubleClickTime()関数でダブルクリックの認識時間の取得はできるということはわかり、あるHPにSetDoubleClickTime(int time)で間隔を設定可能と書いてありましたが、それをプログラムに書いても 「'SetDoubleClickTime': 識別子が見つかりませんでした」とエラーになってしまいます。 ダブルクリックの認識時間の変更方法、またはダブルクリックを認識させないようにする方法がわかる方がいましたがご教授ください。 ようするに私がやりたいことは、ダブルクリックを認識させない、または認識時間を最短にしたいのです。 よろしくお願いします。

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

  • ベストアンサー
noname#144013
noname#144013
回答No.4

こんにちは。 作成するアプリケーションで単に、   『マウスのダブルクリック動作を無効化したい』 というのであれば、#3の方が言われているように、 ウィンドウのメッセージ処理内で、   『マウスのダブルクリック時のメッセージに対して何もしない』 というようにされては如何でしょうか? WindowsCEに関しては判りませんが、Windowsの標準的なアプリ ケーションでは、OSからアプリケーションに対して、   「マウスボタンがクリックされた」とか、   「キーボードのキーが押された」とか などの様々なメッセージが送られています。 アプリケーションでは、それらのメッセージに対して各種処理を 行っていますが、どんな処理を行うかは、アプリケーション側で 決めることが出来ます。 ですので今回の処理も、   マウスの左ボタンのダブルクリック時のメッセージ を捕らえて、その処理を、   デフォルト(標準)処理 から、   何もしない処理 に変更することで可能だと思われます。 VC++の環境ですと、   『マウスの左ボタンのダブルクリック時のメッセージ』 というのは、以下のように定義されていると思います。   WM_LBUTTONDBLCLK   … クライアント領域でのクリック時   WM_NCLBUTTONDBLCLK … 非クライアント領域でのクリック時 注)WindowsCEでも同様かどうかは判りません。 以下は、メッセージ処理を変更する場合の一例です。 ※ウィンドウプロシージャ内で、上記のメッセージに対して何も処理  しないようにしています。 ※MFCの場合でも同様な処理は可能だと思います。 ■ウィンドウプロシージャの記述例 ============================= LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,     WPARAM wParam, LPARAM lParam) {   //ウィンドウメッセージ処理   switch( uMsg )   {   //クライアント領域でのマウスの左ボタンダブルクリック時   case WM_LBUTTONDBLCLK:     //----------------------------------------------     //WM_LBUTTONDBLCLK     //fwKeys = wParam;  //キーフラグ     //xPos = LOWORD(lParam); //カーソルのX座標     //yPos = HIWORD(lParam); //カーソルのY座標     //----------------------------------------------     //※【ここに何も書かないと何も行わない】     break;   //非クライアント領域でのマウスの左ボタンダブルクリック時   case WM_NCLBUTTONDBLCLK:     //----------------------------------------------     //WM_NCLBUTTONDBLCLK     //nHittest = (INT)wParam;  //クリック領域     //pts = MAKEPOINTS(lParam); //カーソル位置     //----------------------------------------------     {       //クリック場所のチェック       INT nHittest = (INT)wParam;       if(nHittest == HTCAPTION){         //タイトルバーでのダブルクリック時         //※【ここに何も書かないと何も行わない】       }       else{         //タイトルバー以外(メニューバー等)でのダブルクリック時         //※【ここに何も書かないと何も行わない】       }     }     break;     :     :~その他のメッセージ処理~     :   //ウィンドウ破棄のメッセージ処理   case WM_DESTROY:     PostQuitMessage(0);     break;   //デフォルトのメッセージ処理   default:     return (DefWindowProc(hWnd, uMsg, wParam, lParam));   }   return 0; } ============================= 以上です。

smile_yuki
質問者

お礼

解決しました! WM_LBUTTONDBLCLKが渡ってきた場合に、それをWM_LBUTTONDOWNに置き換えることで実現できました!! みなさんの意見全て参考になりましたが、一番参考になったFarEyesさんをベストアンサーにさせていただきます。

その他の回答 (3)

回答No.3

Web上でWindowsCEでのサポートがわかる資料が見つけられなかったので、MSDN Library 2001年10月リリースで調べてみました。 GetDoubleClickTimeはWindowsCEでサポートされていますが、SetDoubleClickTimeはないようです。 考えられる方法としては、レジストリを変更してシステムに変更通知を行う、とかですが、CEの開発環境がないので、具体的なアドバイスは難しいです。 そのアプリだけでいいのであれば、各ウィンドウでダブルクリックのメッセージを無視してしまえばいいように思いますが。

回答No.2

Visual Studio 2005 SP1をWindows7 x64で動かして、MFCアプリケーションのプロジェクトで試してみましたが、SetDoubleClickTimeはコンパイル・動作ともにOKでした。

smile_yuki
質問者

補足

私のPCの下記ファイルに、GetDoubleClickTimeは宣言してありましたが、SetDoubleClickTimeは宣言されていませんでした。 それが原因なのでしょうか。。。 ちなみにこのアプリは、WindowsCEで動作するようなアプリです。 c:\program files\windows ce tools\wce600\imx233_mix_sdk\include\armv4i\winuser.h

回答No.1

APIとしては存在するようですが。 SetDoubleClickTime http://msdn.microsoft.com/ja-jp/library/cc411070.aspx ただ、システム全体の設定を変更してしまうようですが。

smile_yuki
質問者

補足

APIとしては存在してるようですね。。。 私のPC等の環境の問題なのでしょうか。 ちなみに環境は Windows XP Professional SP 3 Visual Studio 2005 SP1 (C++) なんですが。

関連するQ&A

  • ダブルクリックの最短間隔

    マウスが古くなってきたせいか、シングルクリックしても勝手にダブルクリッ クになってしまいます。 Windowsの設定では最長のダブルクリックの間隔は設定できるのですが、 最短のダブルクリックの間隔(それより短いとシングルクリックになる) のような設定はできないのでしょうか。 かなり高速のダブルクリックと認識されているはずなので、そういう設定が あれば解決できると思うのです。 レジストリのここをいじればいい、とか、このソフトを使うと解決できる というような情報をお持ちでしたら教えてください。 ソフト側で解決できなければ素直にマウスを買い換えたほうがいいかもしれませんね。

  • Orchis ダブルクリックで開かないときがある

    Windows7でランチャーソフトの Orchis(14.0419) を使っています。 デスクトップをダブルクリックすることで起動するようにしているのですが、 2/5くらいの確率で起動しないことがあります。 マウスのダブルクリックは機能しています。 コントロールパネルの「マウスのプロパティ」ではダブルクリックを100%認識しています。 ダブルクリック以外の起動方法も試しましたが、いまいち使いづらかったです。 ダブルクリックで起動しない理由は何が考えられるでしょうか?

  • クリックするとダブルクリックしたようになる

    光学式マウスを使っています(メーカー&型式不明)。 新しいマウスに買い換えて半年くらいで毎回同じ現象が起こるんですが、 シングルクリックなのにダブルクリックしたような感じになり、 例えばアクセサリの電卓を出して「3」と入力したつもりが「33」に なってしまってとても困っています。 パソコンは富士通のFMVNB75MTを使っています。 行った作業は以下です。 ●フォルダオプションで「シングルクリックで選択し、  ダブルクリックで開く」にチェックを入れる ●コントロールパネルのマウス設定を初期値に変更する コンパネのダブルクリックチェックといういるかのマークがあると 思うんですが、マウス設定を初期値にしても、シングルクリックしている はずなのに、いるかが輪をくぐってしまいます。。。 これはマウスの故障なのでしょうか? マウスは半年くらいで買い換えた方がいいと勝間和代さんは 仰っていましたが、仕事で使っている光学式マウスは 常に順調に作業でき、変更したことがありません。 トラブルの解決方法を教えてください。 どうぞよろしくお願いします。

  • マウスのボタンを、ダブルクリックに変更出来ません

    ノートブックパソコンの「マウスの左ボタン」を「ダブルクリック」に変更しようとしても出来ません。 現在「シングルクリック」です。 変更方法が分かる方がいらっしゃいましたら、ご教授下さい。 パソコンは中古で購入した品(富士通 Fmv-MG13D)で、購入時にリカバリーディスクにてセットアップされていました。(リカバリーディスクは付属していません) OSはWindowsXPで、SP3までアップデートしてあります。 コントロールパネルを開き、「マウスのプロパティ」で「ボタン設定・左ボタン」を確認しましたら、「ダブルクリック」となっています。 でも、動作は「シングル」で、本体キーパッドでも接続したUSBマウスでも、左ボタン一回のクリックで動作してしまいます。 変更するためには、別の場所にて設定をしなければいけないのでしょうか。 念のため、一度「シングル」設定して「適用」ボタンを押し、次に「ダブルクリック」に変更、再度「適用」しても、「ダブル」操作にはなりません。 「リカバリー」ですので、コントロールパネルのデザインが通常版Windowsと異なります。 現在メインで使用の他のパソコンにはOME版WindowsXPを入れているので比較しましたが、「マウスのプロパティ」の表示画面が違います。 富士通リカバリーのため、変更には別の画面での操作が必要なのか・・・。 いくつかの画面を開いて見ましたが、私には発見出来ませんでした。 OS自体を、通常版Windowsで再インストールする手はあります。 別途購入済みXPがあるので、それをインストールすれば良いのですが、現在の不満が「ダブルクリック」にならない点だけですので、どなたか教えて下さると幸いです。

  • ダブルクリックになります

    マウスを一回クリックしただけなのにダブルクリックになり使いにくく助けてください コントロールパネルのマウスの所から設定を変更しても変わらない状態です。 もしかしたら設定の仕方が悪いのかもしれません。 どうすればいいか教えてください。 よろしくお願いします。

  • マウスのクリック方式をシングルクリックからダブルクリックに変更したい

    まず、環境から。 パソコン:富士通のDESKPOWER CE21WCM マウス:本体付属のUSBマウス OS:Windows XP Pro SP2 上記の環境で、この機種はダブルクリック起動のアプリケーションなどがデフォルトでシングルクリックで起動するようになっています。 シングルクリック起動は便利ですが、反面、間違えてクリックし、不要なアプリケーションやファイルを開く事にもなりますので、このクリックをダブルクリックにしたいと思っております。 しかしながら、コントロールパネルなどのマウスの設定を見ても、シングルクリックをダブルクリックに変える方法が見当たりません。 クリック方式の変更方法をご存知の方、ご教示ください。 よろしくお願いいたします。

  • 一回のクリックでダブルクリックされてしまう

    最近、マウスの左クリックを行うと、一回クリックしただけなのにダブルクリックされた状態になってしまいます。 フォルダオプションでシングルクリックでダブルクリックになる設定を行っているわけではないのにです。 どうしたらよいでしょう? ちなみに、DELLの531 VISTAの環境です。

  • ダブルクリック

    マウスを確実にシングルクリックしても勝手にダブルクリックになってしまいます。機種はサンワサプライのMA-78HSで光学USB接続マウスで、PC環境は自作のXPです。とりあえず試したことは、1、ドライバをアンインストールして再インストール。2、マウスのプロパティでクリック速度の調整。3、Cドライブをスキャンディスク。の3つを試してみましたが変わりません。購入当初はまともに作動していましたが、1ヶ月位してからこうなりました。マウスで「スタート」ボタンをクリックした時の感じでは左ボタンを押した時に1回クリック放した時にもう一度クリックしているような感じでダブルクリックになっているようです。故障でしょうか?

  • 左クリックでダブルクリックしています

    1週間ほど前から、普通に左クリックすると、 ダブルクリックになっています。 お気に入りをクリックすると、リストが閉じてしまうのでおかしいと思っていたところ ディスクトップのアイコンもいきなり開くので ダブルクリックになっていると気づきました 使用しているマウスは、マイクロソフトの インテルマウスオプティカルです コントロールパネルのフォルダオプション の確認 ドライバーの再インストールを行いましたが 解消されていません

  • マウスをクリックすると、たまにダブルクリックになってしまう

    つい最近から、左クリックするとシングルクリックであるにもかかわらずダブルクリックになってしまいます マウスそのものが故障しているのか、パソコンの動作が不安定なのか、ウィルス又はスパイウェアによっての動作であるかの3択であろうと思い、詳しい方の意見を聞きたく思います そういったスパイウェアやウィルスというのはありますでしょうか? また、違う可能性での復旧方法などがあったら教えてほしいです 一応スパイウェア駆除ツールや、ウィルスソフトは入っています

専門家に質問してみよう