いつもお世話になっております。
表題の不具合を見つけましたのでご連絡させて頂きます。
ウィンドウサイズを変更したらマウス座標が1ピクセルずれます。
以下を実行すると現象が確認できるかと思います。
【ソース】
/*****************************************************/
#include "DxLib.h"
#include <string>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int x, y;
// 初期サイズは1920x1080
SetGraphMode(1920, 1080, 32);
SetFullSceneAntiAliasingMode(8, 8);
SetWindowSizeExtendRate(1.0);
ChangeWindowMode(TRUE);
SetDoubleStartValidFlag(TRUE);
SetUseCharCodeFormat(DX_CHARCODEFORMAT_UTF8);
SetWindowText(u8"テスト");
SetChangeScreenModeGraphicsSystemResetFlag(FALSE);
SetWindowSizeChangeEnableFlag(TRUE, TRUE);
DxLib_Init();
// マウスカーソルを960, 360の位置に移動後そのままマウス座標を取得
SetMousePoint(960, 360);
GetMousePoint(&x, &y);
DrawString(20, 20, (u8"ウィンドウサイズ変更前 x:" + std::to_string(x) + " y:" + std::to_string(y)).c_str(), 0xffffff);
// ウィンドウサイズを変更
SetWindowSize(1920 + 1, 1080 + 1);
// 再度マウスカーソルを960, 360の位置に移動してマウス座標を取得
SetMousePoint(960, 360);
GetMousePoint(&x, &y);
DrawString(20, 40, (u8"ウィンドウサイズ変更後1 x:" + std::to_string(x) + " y:" + std::to_string(y)).c_str(), 0xffffff);
// ウィンドウサイズを変更
SetWindowSize(1920 + 2, 1080 + 3);
// 再度マウスカーソルを960, 360の位置に移動してマウス座標を取得
SetMousePoint(960, 360);
GetMousePoint(&x, &y);
DrawString(20, 60, (u8"ウィンドウサイズ変更後2 x:" + std::to_string(x) + " y:" + std::to_string(y)).c_str(), 0xffffff);
WaitKey();
return 0 ; // ソフトの終了
}
/*****************************************************/
【出力結果】
ウィンドウサイズ変更前 x:960 y:360
ウィンドウサイズ変更後1 x:959 y:359
ウィンドウサイズ変更後2 x:960 y:360
【詳細】
・SetGraphMode と 実際のウィンドウサイズに差異がある場合ずれる
・SetGraphMode をウィンドウサイズと同じ大きさに設定するとずれない
・ユーザーによる手動でのウィンドウサイズ変更でもずれる
・『ウィンドウサイズ変更後2』のようにサイズによってはずれない場合もあります
よろしくお願いいたします。