トップページ > 記事閲覧
GetMouseWheelRotVol関数の不具合
名前:てきやく 日時: 2016/01/30 15:58

GetMouseWheelRotVol関数を使用した際、ソフトを起動した直後は問題ないのですが、 何回かマウスホイールをグリグリと動かしていると 手前に回す→奥に回す や 奥に回す→手前に回す という操作をした場合に 最初の1回だけ反応しなくなります。 手前に回す→奥に回す→手前に回す→……と繰り返した場合はまったく読み取られません。 この現象はリファレンスページのサンプルコードでも発生しました。
メンテ

Page: 1 |

Re: GetMouseWheelRotVol関数の不具合 ( No.1 )
名前:管理人 日時:2016/01/31 23:08

手元の環境で GetMouseWheelRotVol のサンプルコードで試してみましたが、 ご指摘のような現象は発生しませんでした GetMouseWheelRotVol で返ってくる値はほぼ OS から得られる情報そのままなので、 DXライブラリのプログラムがバグっている可能性は低く、OSの仕様であったり、 マウス自身が原因である可能性が高いと思います 一応 int 型ではなく float 型で回転値を得る関数を使ったテストコードを作成して みましたので、よろしければこちらでも同様の結果になるかお試しになってみてください m(_ _)m #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { float Rot ; ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 return -1; // エラーが起きたら直ちに終了 // 裏画面を使用 SetDrawScreen( DX_SCREEN_BACK ) ; // 合計値を初期化 Rot = 0 ; // 何かキーが押されるまでループ while( CheckHitKeyAll() == 0 ) { // メッセージ処理 if( ProcessMessage() == -1 ) break ; // エラーが起きたらループから抜ける // 前回 GetMouseWheelRotVol が呼ばれてから今回までの回転量を足す Rot += GetMouseWheelRotVolF() ; // 画面を初期化 ClearDrawScreen() ; // 画面に回転量を描画 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "%f", Rot ) ; // 裏画面の内容を表画面に表示 ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
メンテ
Re: GetMouseWheelRotVol関数の不具合 ( No.2 )
名前:てきやく 日時:2016/02/01 21:01

テストコードのご用意ありがとうございます。 結果としましては、GetMouseWheelRotVolF関数では同様の現象は発生しませんでした。 ためしにRotをint型変数に戻し Rot += (int)GetMouseWheelRotVolF(); としてみましたが、やはり発生しませんでした。
メンテ
Re: GetMouseWheelRotVol関数の不具合 ( No.3 )
名前:管理人 日時:2016/02/02 02:57

お試しいただきありがとうございます GetMouseWheelRotVolF では大丈夫でしたか・・・ 手元の環境では相変わらず再現できていませんが、GetMouseWheelRotVolF と GetMouseWheelRotVol のコードを見比べたところ、件の現象が発生する原因となりうる 箇所が一つ見つかりましたので、その部分に手を加えてみました お手数で申し訳ありませんが、よろしければこちらのバージョンでも GetMouseWheelRotVol では正常に動作しないか試してみてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: GetMouseWheelRotVol関数の不具合 ( No.4 )
名前:てきやく(解決) 日時:2016/02/02 19:43

正常に動作することが確認できました。 ご対応ありがとうございます。 また、解決としましたがちょっとした報告です。 最近のアップデートからだったと思うのですが、 SetOutApplicationLogValidFlag(FALSE); としていても内容の短いLog.txtが自動でできてしまうようです。
メンテ
Re: GetMouseWheelRotVol関数の不具合 ( No.5 )
名前:管理人(解決) 日時:2016/02/03 00:21

> SetOutApplicationLogValidFlag(FALSE); > としていても内容の短いLog.txtが自動でできてしまうようです。 最近 DxLib_Init 呼び出し前の情報を取得する為に、ChangeWindowMode などが 呼ばれた時点で Log.txt が作成されるようになりました なので、Log.txt を作成しないようにする為には他の全てのDXライブラリの関数より 先に SetOutApplicationLogValidFlag(FALSE); を実行する必要があります SetOutApplicationLogValidFlag の説明も修正しておきました ご指摘ありがとうございます m(_ _;m
メンテ

Page: 1 |

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

   クッキー保存