トップページ > 記事閲覧
マウスのサイドボタンの検出について
名前:ボン 日時: 2017/04/10 00:49

はじめて質問させていただきます ブラウザなどで「戻る」「進む」の操作をするときに使用する、マウスのサイドボタンはどうやって検出すればいいのでしょうか? GetMouseInput()の引数を一通り試しても検出はされませんでした さらに、「サイドボタンはBackSpaceやShift+BackSpaseで動いているかもしれない」と某掲示板でヒントを頂いたのですが、 CheckHitKeyAll()で試してもサイドボタンは検出されませんでした そして自分が調べた限りでは、サイドボタンがXButton1・XButton2と呼ばれていることしか得られませんでした 「こう記述すればサイドボタンを検出できる」など、解決法を教えてください よろしくお願いします
メンテ

Page: 1 |

Re: マウスのサイドボタンの検出について ( No.1 )
名前:管理人 日時:2017/04/10 01:00

サイドボタンを押しても GetMouseInput の戻り値が 0 のまま、ということでしょうか? 一応マウスボタンの判定用には MOUSE_INPUT_LEFT, MOUSE_INPUT_RIGHT, MOUSE_INPUT_MIDDLE のほかに MOUSE_INPUT_1, MOUSE_INPUT_2, MOUSE_INPUT_3, MOUSE_INPUT_4, MOUSE_INPUT_5, MOUSE_INPUT_6, MOUSE_INPUT_7, MOUSE_INPUT_8 がありますので( MOUSE_INPUT_1 〜 MOUSE_INPUT_3 は MOUSE_INPUT_LEFT 〜 MOUSE_INPUT_MIDDLE と同義 )、 どれかで検出することができるかもしれません あと、よろしければサイドボタンを検出したいというお使いのマウスのメーカー名や型番を教えてください m(_ _)m
メンテ
Re: マウスのサイドボタンの検出について ( No.2 )
名前:ボン 日時:2017/04/10 01:23

サイドボタンを検出したいマウスは、MAD CATZ社製のR.A.T. TE(MC-RTE-WH /JAN: 4580398814343)です このマウスで以下のコードを実行しましたが、サイドボタンが検出されることはありませんでした #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( true ); if( DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; if (GetMouseInput() & MOUSE_INPUT_1) DrawString(10, 10, "M1", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_2) DrawString(10, 10, "M2", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_3) DrawString(10, 10, "M3", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_4) DrawString(10, 10, "M4", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_5) DrawString(10, 10, "M5", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_6) DrawString(10, 10, "M6", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_7) DrawString(10, 10, "M7", GetColor(255, 255, 255)); if (GetMouseInput() & MOUSE_INPUT_8) DrawString(10, 10, "M8", GetColor(255, 255, 255)); if (CheckHitKeyAll())DrawString(10, 30, "any", GetColor(255, 255, 255)); ScreenFlip() ; } DxLib_End() ; return 0 ; }
メンテ
Re: マウスのサイドボタンの検出について ( No.3 )
名前:管理人 日時:2017/04/10 23:37

ご返答&お試しいただきありがとうございます すみません、DXライブラリのプログラムを確認してみたところ、DxLib_Init の呼び出しの前に SetUseDirectInputFlag( TRUE ) ; という記述を行わないとマウスの4ボタン目以降をチェックしないようになっていました ただ、WindowsVista 以降でキーボードやマウスのすべての処理を DirectInput で行うと 不具合が発生することが分かっているので、マウスに関してはボタン入力のチェックのみ DirectInput を使用するように処理を変更してみました その変更を加えたバージョンをこちらにアップしましたので、よろしければこちらのバージョンに 差し替えた上で No.2 に載せていただいたプログラムをお試しになってみてください m(_ _;m http://dxlib.o.oo7.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 http://dxlib.o.oo7.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 http://dxlib.o.oo7.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 http://dxlib.o.oo7.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 http://dxlib.o.oo7.jp/temp/DxLibDotNet.zip // Windows版 .NET用 http://dxlib.o.oo7.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい) > そして自分が調べた限りでは、サイドボタンがXButton1・XButton2と呼ばれていることしか得られませんでした ご情報ありがとうございます DirectInput を使用しないでマウスの4ボタン・5ボタンの押下状態を調べる際に使用する ID でした( VK_XBUTTON1, VK_XBUTTON2 ) 今回の変更でマウスのボタン入力のチェックに DirectInput を使用するように処理を変更しましたが、 一応今まで使用していた DirectInput を使用しないでマウスのボタン入力をチェックする処理でも VK_XBUTTON1, VK_XBUTTON2 を使用して5ボタン目まで調べるようにしました m(_ _)m
メンテ
Re: マウスのサイドボタンの検出について ( No.4 )
名前:ボン 日時:2017/04/11 00:43

すごく丁寧で真摯な対応をしていただき、ありがとうございます! DXライブラリのバージョン更新をしてNo.2のプログラムを実行した結果、見事にM4とM5が左上に表示されました バージョン更新ファイルのアップまでしていただいたので、そのことを無駄にしないよう頑張ってゲームを完成させようと思います 改めて、ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存