トップページ > 記事閲覧
フルスクリーン時のマウス座標の挙動について
名前:Nameless 日時: 2015/06/16 20:51

先日はありがとうございました。 マウスを画面の中心に持って行くプログラムを組んでいたときに、バグと思われる挙動を発見しました。 ディスプレイの中心にマウスを持って行くプログラムがうまく動作しないというものです。 以下検証プログラムです。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // フルスクリーンモード時の解像度モードを変更 SetFullScreenResolutionMode(DX_FSRESOLUTIONMODE_MAXIMUM); if (DxLib_Init() == -1){ return -1; } // マウスを表示状態にする SetMouseDispFlag(TRUE); //ディスプレイの中心にマウスを持って行きたい int screen_x, screen_y; GetDrawScreenSize(&screen_x, &screen_y); SetMousePoint(screen_x / 2, screen_y / 2); DrawFormatString(0, 0, GetColor(255, 255, 255), "中心 (x,y):(%d,%d)", disp_x / 2, disp_y / 2); //マウス座標の表示 int mouse_posx, mouse_posy; GetMousePoint(&mouse_posx, &mouse_posy); DrawFormatString(0, 20, GetColor(255, 255, 255), "移動先(x,y):(%d,%d)", mouse_posx, mouse_posy); WaitKey(); DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 } 問題なのは、SetFullScreenResolutionModeでDX_FSRESOLUTIONMODE_NATIVE以外を指定した場合 SetMousePointの座標のとり方が他の場合(ウインドウモード時やSetFullScreenResolutionMode未使用時) と異なることだと思います。 おそらく、描画画面の大きさと表示画面の大きさが同じという前提の動作をしていたのに、 SetFullScreenResolutionModeがその前提を崩したためにこのような挙動になっているんだと思います。
メンテ

Page: 1 |

Re: フルスクリーン時のマウス座標の挙動について ( No.1 )
名前:管理人 日時:2015/06/17 01:33

ご指摘の通り SetMousePoint でフルスクリーンモードの拡大が考慮されていませんでした 考慮するように修正したバージョンをアップしましたので、よろしければお試しください 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: フルスクリーン時のマウス座標の挙動について ( No.2 )
名前:Nameless(解決) 日時:2015/06/17 18:18

迅速な対応ありがとうございます。 正式バージョンの方で正常に動作することを確認しました。
メンテ

Page: 1 |

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

   クッキー保存