ライブラリのバージョンは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;
}