いつもすみません、たろうです
ゲームの縦横サイズをゲーム中にかえますが、その際の挙動で困っています
下はそれを再現したものですが・・・
1ボタンでウィンドウサイズを変え、2ボタン終了という仕組みです
このまま実行した時と、SetChangeScreenModeGraphicsSystemResetFlag(0);をコメントアウト
した上で実行したときで、ウィンドウサイズの挙動が変わってしまいます。
SetChangeScreenModeGraphicsSystemResetFlagがあるとウィンドウサイズが変更されないようです。
2枚のモニタの解像度がそれぞれ両方とも1920x1080のときにそれがおこるのですが
片方を縦表示にして1920x1080(プライマリ)と1080x1920という設定にしてためすと
SetChangeScreenModeGraphicsSystemResetFlagがあってもウィンドウサイズがちゃんと変更されます。
つまり存在するモニタの縦(横)幅よりも長い縦(横)幅のサイズを指定して
SetGraphMode();を行うと、SetChangeScreenModeGraphicsSystemResetFlagがあるばあいのみ
ウィンドウのサイズがおかしくなるようです。
すみませんが、ご確認いただけると助かります
よろしくお願いいたしますm(_ _)m
(※2026/02/23 23:11の最新のバージョンを使っています)
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE ) ;
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK );
SetGraphMode(1920,1080,32);
SetChangeScreenModeGraphicsSystemResetFlag(0); //画面モード変更時グラハンリセットしない
int nb=0,font=CreateFontToHandle("Arial",12,9,0);
int swt=0,mode=0,IM=LoadGraph("test.bmp");//1920x1080pxの画像
while( ProcessMessage() == 0 )
{
ClearDrawScreen();
DrawBox(1,1,300,300,GetColor(255,0,0),1);
DrawGraph(0,0,IM,1);
if(CheckHitKey(KEY_INPUT_1)==1){swt=1;}
if(CheckHitKey(KEY_INPUT_1)==0&&swt){swt=0;mode=(int)!mode;if(mode==0){SetGraphMode(1920,1080,32);}else{SetGraphMode(1080,1920,32);}}
if(CheckHitKey(KEY_INPUT_2)==1){return 0 ;}
ScreenFlip();
}
DxLib_End() ;
return 0 ;
}