トップページ > 記事閲覧
フルスクリーンでのマウス座標取得
名前:ななし 日時: 2017/11/11 17:29

ライブラリのバージョンは3.19を使用しています。 リファレンスページのGetMouseInputLog2のサンプルプログラムに、マウスカーソルを表示するためにSetMouseDispFlag( TRUE ) ;を書き足して実行したのですが、 フルスクリーンで実行した場合にはクリックした位置と四角が表示される位置にずれがありました。 ウインドウモードで実行した場合にはクリックした位置に四角が表示されているのですが、 フルスクリーンだとクリックした位置から右下へ離れた位置にずれて四角が表示されます。 SetGraphModeで画面の解像度を変えて試してみたところ、実際のモニターの解像度と画面の解像度との差が大きくなるほどずれも大きくなるようです。 以下はプログラムです。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ClickX, ClickY, Button, LogType; int DrawFlag, DrawX, DrawY, DrawColor; // DXライブラリの初期化 if (DxLib_Init() < 0) return -1; // マウスを表示状態にする SetMouseDispFlag(TRUE); // 描画先を裏画面にする SetDrawScreen(DX_SCREEN_BACK); // 描画情報の初期化 DrawFlag = FALSE; DrawX = 0; DrawY = 0; DrawColor = 0; // メインループ(何かキーが押されたらループを抜ける) while (ProcessMessage() == 0) { // 画面のクリア ClearDrawScreen(); // マウスのボタンが押されたり離されたりしたかどうかの情報を取得する if (GetMouseInputLog2(&Button, &ClickX, &ClickY, &LogType, TRUE) == 0) { // 左ボタンが押されたり離されたりしていたら描画するかどうかのフラグを立てて、座標も保存する if ((Button & MOUSE_INPUT_LEFT) != 0) { DrawFlag = TRUE; DrawX = ClickX; DrawY = ClickY; // 四角形の色を押された場合は白に、離された場合は紫にする DrawColor = LogType == MOUSE_INPUT_LOG_DOWN ? GetColor(255, 255, 255) : GetColor(255, 0, 255); } } // 描画するかどうかのフラグが立っていたら、マウスの左ボタンが押されたり離されたりした座標に小さい四角形を描画する if (DrawFlag == TRUE) { DrawBox(DrawX - 8, DrawY - 8, DrawX + 8, DrawY + 8, DrawColor, TRUE); } // 裏画面の内容を表画面に反映 ScreenFlip(); // 0.5秒待つ WaitTimer(500); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
メンテ

Page: 1 |

Re: フルスクリーンでのマウス座標取得 ( No.1 )
名前:管理人 日時:2017/11/12 00:16

ご指摘ありがとうございます 現在のDXライブラリは標準解像度の 640x480 の設定でフルスクリーンモードで起動しても実際の 画面の解像度はプログラム実行時のデスクトップの解像度だったりする( 640x480 の解像度に対応していない 環境が増えた為 )ので、マウスの座標も実際の画面解像度の座標からDXライブラリでの解像度に合わせて 補正する処理を GetMousePoint などの関数では行っているのですが、その処理を GetMouseInputLog や GetMouseInputLog2 では行っていませんでした GetMouseInputLog や GetMouseInputLog2 でも座標の補正処理を行うようにしたことで正常な座標が 取得できるようになりましたので、よろしければこちらの修正版をお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース
メンテ
Re: フルスクリーンでのマウス座標取得 ( No.2 )
名前:ななし(解決) 日時:2017/11/12 08:31

フルスクリーンでもクリック位置がずれなくなりました。 迅速な対応をありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存