先日はありがとうございました。
マウスを画面の中心に持って行くプログラムを組んでいたときに、バグと思われる挙動を発見しました。
ディスプレイの中心にマウスを持って行くプログラムがうまく動作しないというものです。
以下検証プログラムです。
#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がその前提を崩したためにこのような挙動になっているんだと思います。