トップページ > 記事閲覧
フルスクリーンとウィンドウモードの切り替えについて
名前:たろう 日時: 2021/04/28 09:01

繰り返しすみません、たろうです 下のプログラムを、左1080x1920(ウィンドウズのディスプレイ設定で横倒し) と 右1920x1080(メイン) という状態で実行させるのですが、 A(ウィンドウ)S(最大化)D(フルスクリーン)キーで各モードを切り替えるようになっています。 始めはS(最大化)状態で、AとSを切り替えても問題なく表示されますが これを一旦D(フルスクリーン)を経由すると、そのあと左モニタでS(最大化)すると、 下半分が表示されなくなってしまいます。おそらくSetGraphModeを呼ぶと、縦が右モニタの1080になってしまい その後SetGraphModeで1080よりも大きい数字を指定しても元に戻らないのが原因のように思います。 そして、SetChangeScreenModeGraphicsSystemResetFlag(0);を使わなければこの問題は発生しないようなのですが モードを切り替える都合上使わないわけにもいかないですし これには解決法はありますでしょうか? アドバイスを頂けると助かります。 宜しくお願いいたします<(_ _)> ----------------------------------------------------------------------------------- #include "DxLib.h" int WIx=1920,WIy=1080; //結果的に使うwinサイズ int MOx=WIx/2 ,MOy=WIy/2; //ウィンドウモード時の開始時winサイズ int mxWIx=0,mxWIy=0; //全モニタ最大サイズ int pWIx=1920,pWIy=1080; //プライマリwinサイズ int Wst=0; //WIN状態 (2fullscreen 1windowfull 0window) void GetMonitor() { int Monitors=GetDisplayNum(),MINx,MINy; for(int i=0;i<(Monitors);i++) { int x,y,dx,dy,Prm; GetDisplayInfo(i, &x,&y, &dx,&dy ,&Prm); if(Prm==TRUE){pWIx=dx;pWIy=dy;} if(mxWIx<dx)mxWIx=dx;if(mxWIy<dy)mxWIy=dy; if(i==0){MINx=dx;MINy=dy;}else{if(MINx>dx)MINx=dx;if(MINy>dy)MINy=dy;} } if(Wst==2){WIx=pWIx;WIy=pWIy;}else{WIx=mxWIx;WIy=mxWIy;} MOx=MINx*0.75;MOy=MINy*0.75; } void CTRL() { static int st=-1; if(Wst==2)//フルスクリーン { if(st!=2){ChangeWindowMode(FALSE);SetGraphMode( pWIx, pWIy,16);st=2; SetMouseDispFlag(TRUE);}//SetChangeScreenModeGraphicsSystemResetFlag(FALSE);をDxLib_Init()前に呼ぶ } else if(Wst==1)//最大化 { if(st!=1) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode(mxWIx,mxWIy,16);}st=1; SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_TOOLWINDOW); SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_POPUP | WS_SYSMENU | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); ShowWindow( GetMainWindowHandle(),SW_MAXIMIZE ); } } else if(Wst==0)//ウィンドウ { if(st!=0) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode( mxWIx,mxWIy,16);}st=0; ShowWindow( GetMainWindowHandle(),SW_RESTORE); SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_LEFT) ; SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_OVERLAPPEDWINDOW | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); } } } int FRST() { GetMonitor(); if(Wst<2){ChangeWindowMode(1);SetGraphMode(WIx ,WIy ,16);} else { SetGraphMode(pWIx,pWIy,16);} SetWindowSizeChangeEnableFlag(1,0); if(Wst<2){SetWindowSize(MOx,MOy);} if( DxLib_Init()<0)return -1; SetChangeScreenModeGraphicsSystemResetFlag(0); SetDrawScreen( DX_SCREEN_BACK ); CTRL(); return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { Wst=1;//WIN状態 (2fullscreen 1maxwin 0win) FRST(); int mx,my,i=0; while( ProcessMessage() == 0 ) { ClearDrawScreen() ;GetMousePoint(&mx,&my) ; for(int i=0;i<50;i++){for(int i2=0;i2<50;i2++){if((i+i2)%1==0)DrawBox(100*i,100*i2,100*i+50,100*i2+50,GetColor(255,0,0),1);}} DrawFormatString( 0,10,GetColor(255,255,255),u8"x(%d) y(%d) Wst(%d)",mx,my,Wst); ScreenFlip(); if(CheckHitKey(KEY_INPUT_A)&&i<0){Wst=0;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_S)&&i<0){Wst=1;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_D)&&i<0){Wst=2;CTRL();i=15;}i--; if(CheckHitKey(KEY_INPUT_ESCAPE)){break;} } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: フルスクリーンとウィンドウモードの切り替えについて ( No.1 )
名前:管理人 日時:2021/04/29 01:18

DXライブラリの内部でプライマリディスプレイのサイズ以上の解像度を SetGraphMode で 指定できないようにしている処理がありましたので、ウィンドウモードの場合は 全てのディスプレイの解像度よりも大きなサイズを SetGraphMode で指定している 場合のみエラーとするようにしました 手元では載せて頂いたコードで正常に動作することが確認できましたので、 よろしければその変更を加えたこちらのバージョンをお試しになってみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.2 )
名前:たろう 日時:2021/04/29 11:35

お忙しい所、いつもありがとうございます。 @修正版を試してみましたが、私の環境では何も変わらず 下半分がカットされた状態のままでした… Aまた、修正版で下のプログラムを実行すると、何も表示されないようになってしまいます。。 2021.04.02(DXライブラリ)のバージョンで起動すると赤い四角がたくさん表示されるプログラムですので その間のどこかで何か関連する修正がありましたでしょうか? 何度もすみません、ご確認いただけると助かります 宜しくお願いいたします<(_ _)> ------------------------------------------------------------------------------- #include "DxLib.h" int WIx=1920,WIy=1080,WIxh=WIx/2,WIyh=WIy/2; int MKx=2200,MKy=2200,MKxh=MKx/2,MKyh=MKy/2; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(1); SetGraphMode(1920,1080,16); SetWindowSizeChangeEnableFlag(1,0); if( DxLib_Init()<0)return -1; SetUsePremulAlphaConvertLoad(1); SetFontCacheUsePremulAlphaFlag(1); SetChangeScreenModeGraphicsSystemResetFlag(0); SetDrawScreen( DX_SCREEN_BACK ); if( DxLib_Init()<0)return -1; int MK=MakeScreen(MKx,MKy,1); while( ProcessMessage() == 0 ) { ClearDrawScreen() ; SetDrawScreen(MK); for(int i=0;i<50;i++){for(int i2=0;i2<50;i2++){if((i+i2)%1==0)DrawBox(100*i,100*i2,100*i+50,100*i2+50,GetColor(255,0,0),1);}} SetDrawScreen(DX_SCREEN_BACK); DrawRotaGraph2F(WIxh,WIyh, MKxh,MKyh, 1.0,0, MK,1); SetDrawScreen(MK); ClearDrawScreen(); SetDrawScreen(DX_SCREEN_BACK); ScreenFlip(); if(CheckHitKey(KEY_INPUT_ESCAPE)){break;} } DxLib_End(); return 0; }
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.3 )
名前:管理人 日時:2021/04/30 01:54

うーん駄目でしたか… Aの現象については確認したところ、ご指摘の通り最近DXライブラリのコードに加えた変更が原因でした 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) この変更で@にも変化があると良いのですが…
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.4 )
名前:たろう 日時:2021/04/30 07:32

修正版をありがとうございます。 @は、下半分が消える症状に変わりありませんでしたが Aの症状は完全に回復していました。ありがとうございます そうなりますと、@については SetChangeScreenModeGraphicsSystemResetFlag(0);は使用せずに、 デバイスロストや、ウィンドウモードの切り替えのタイミングで、 InitGraph();で読んだ画像を全て削除をして もう一度全て読み直す仕組みで対応する感じでしょうか?
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.5 )
名前:管理人 日時:2021/05/01 22:29

Aは直ったようで何よりです > そうなりますと、@については > SetChangeScreenModeGraphicsSystemResetFlag(0);は使用せずに、 > デバイスロストや、ウィンドウモードの切り替えのタイミングで、 > InitGraph();で読んだ画像を全て削除をして > もう一度全て読み直す仕組みで対応する感じでしょうか? そちらの方法でも問題ありませんが、@についても修正できると思います ただ、私の手元にたろうさんの現象を再現するための環境が無いので原因の究明が難しい状態です… よろしければ『下半分がカットされた状態』になった際に GetScreenState で画面のサイズを取得して、 得られる値はどのようになっているか( たろうさんの意図した画面サイズになっているか ) ご確認の上、教えていただけないでしょうか? m(_ _;m
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.6 )
名前:たろう 日時:2021/05/02 00:09

ありがとうございます、 GetScreenStateの値を調べましたところ @S(最大化) SCx=1920 SCy=1920(※左モニタいっぱいに赤い四角) ↓ AA(ウィンドウ) SCx=1920 SCy=1920 ↓ BD(フルスクリーン) SCx=1920 SCy=1080 ↓ CA(ウィンドウ) SCx=1920 SCy=1080 ↓ DS(最大化) SCx=1920 SCy=1080(※ウィンドウが左モニタに最大化されるが赤い四角は下半分は表示されない) という状態でした 私が意図しているのはCDでxyとも1920(xは右モニタの1920、yは左モニタ(※横倒し)の1920が最大値なので)となる状態です 以下がチェック用に修正したプログラムです。よろしくお願いいたします<(_ _)> #include "DxLib.h" int WIx=1920,WIy=1080; //結果的に使うwinサイズ int MOx=WIx/2 ,MOy=WIy/2; //ウィンドウモード時の開始時winサイズ int mxWIx=0,mxWIy=0; //全モニタ最大サイズ int pWIx=1920,pWIy=1080; //プライマリwinサイズ int Wst=0; //WIN状態 (2fullscreen 1windowfull 0window) void GetMonitor() { int Monitors=GetDisplayNum(),MINx,MINy; for(int i=0;i<(Monitors);i++) { int x,y,dx,dy,Prm; GetDisplayInfo(i, &x,&y, &dx,&dy ,&Prm); if(Prm==TRUE){pWIx=dx;pWIy=dy;} if(mxWIx<dx)mxWIx=dx;if(mxWIy<dy)mxWIy=dy; if(i==0){MINx=dx;MINy=dy;}else{if(MINx>dx)MINx=dx;if(MINy>dy)MINy=dy;} } if(Wst==2){WIx=pWIx;WIy=pWIy;}else{WIx=mxWIx;WIy=mxWIy;} MOx=MINx*0.75;MOy=MINy*0.75; } void CTRL() { static int st=-1; if(Wst==2)//フルスクリーン { if(st!=2){ChangeWindowMode(FALSE);SetGraphMode( pWIx, pWIy,16);st=2; SetMouseDispFlag(TRUE);}//SetChangeScreenModeGraphicsSystemResetFlag(FALSE);をDxLib_Init()前に呼ぶ } else if(Wst==1)//最大化 { if(st!=1) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode(mxWIx,mxWIy,16);}st=1; SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_TOOLWINDOW); SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_POPUP | WS_SYSMENU | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); ShowWindow( GetMainWindowHandle(),SW_MAXIMIZE ); } } else if(Wst==0)//ウィンドウ { if(st!=0) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode( mxWIx,mxWIy,16);}st=0; ShowWindow( GetMainWindowHandle(),SW_RESTORE); SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_LEFT) ; SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_OVERLAPPEDWINDOW | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); } } } int FRST() { GetMonitor(); if(Wst<2){ChangeWindowMode(1);SetGraphMode(WIx ,WIy ,16);} else { SetGraphMode(pWIx,pWIy,16);} SetWindowSizeChangeEnableFlag(1,0); if(Wst<2){SetWindowSize(MOx,MOy);} if( DxLib_Init()<0)return -1; SetChangeScreenModeGraphicsSystemResetFlag(0); SetDrawScreen( DX_SCREEN_BACK ); CTRL(); return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { Wst=1;//WIN状態 (2fullscreen 1maxwin 0win) FRST(); int mx,my,i=0,SCx,SCy,SCb=0; while( ProcessMessage() == 0 ) { ClearDrawScreen() ;GetMousePoint(&mx,&my) ;GetScreenState(&SCx,&SCy,&SCb) ; for(int i=0;i<50;i++){for(int i2=0;i2<50;i2++){if((i+i2)%1==0)DrawBox(100*i,100*i2,100*i+50,100*i2+50,GetColor(255,0,0),1);}} DrawFormatString( 0,10,GetColor(255,255,255),u8"x(%d) y(%d) Wst(%d)",mx,my,Wst); DrawFormatString( 0,30,GetColor(255,255,255),u8"SCx(%d) SCy(%d) Wst(%d)",SCx,SCy,SCb); ScreenFlip(); if(CheckHitKey(KEY_INPUT_A)&&i<0){Wst=0;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_S)&&i<0){Wst=1;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_D)&&i<0){Wst=2;CTRL();i=15;}i--; if(CheckHitKey(KEY_INPUT_ESCAPE)){break;} } DxLib_End(); return 0; }
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.7 )
名前:管理人 日時:2021/05/02 01:31

ご確認ありがとうございます 頂いたご情報を元に少しプログラムを変更してみましたので よろしければこちらの変更版を試してみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.8 )
名前:たろう(解決) 日時:2021/05/02 07:08

変更版をありがとうございます。 先ほど試して、期待した動作が得られることを確認いたしました お忙しい中ご対応いただきありがとうございました <(_ _)>
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.9 )
名前:たろう 日時:2021/05/24 23:31

すみません、解決をつけたスレッドですが 関連して追加で質問させてください<(_ _)> 下に貼ったものはNo.6の赤い四角の表示部分だけ変えたプログラムですが 3840x2160の解像度のモニタで150%(ウィンドウズの拡大縮小とレイアウトの表示スケール)で表示させたところ、 変な事になりました。 WinMain内の始めのWstを変える事で、起動時のウィンドウの状態を設定する仕組みになっているのですが これを1にして起動すると、ウィンドウ最大化から始まって、D(フルスクリーン)S(最大化)キーと ウィンドウ状態を何度切り替えても、D、S共に1000pxサイズの赤い四角が横に4個弱(3840なので)表示されます ですがこれを2にしてのフルスクリーン状態から起動すると、S(最大化)に切り替えた時点で 四角は3個弱になってしまいます。このときGetScreenStateで得られるSCx,SCyは3840x2160になっていますが 表示だけはウィンドウズの表示スケール150パーセントが適用されてしまっているように思います 同じくフルスクリーン→最大化を経由しているのに、起動時にフルスクリーンだったか最大化だったかで ウィンドウズの表示スケールが適用されたりされなかったりしています これはDXライブラリ側ではなく、ウィンドウズの仕様の問題なのかもしれませんが、 なにか解決策があればアドバイスを頂けますでしょうか? お忙しいところすみません、宜しくお願いいたします。 ------------------------------------------------------------------------------------- #include "DxLib.h" int WIx=1920,WIy=1080; //結果的に使うwinサイズ int MOx=WIx/2 ,MOy=WIy/2; //ウィンドウモード時の開始時winサイズ int mxWIx=0,mxWIy=0; //全モニタ最大サイズ int pWIx=1920,pWIy=1080; //プライマリwinサイズ int Wst=0; //WIN状態 (2fullscreen 1windowfull 0window) void GetMonitor() { int Monitors=GetDisplayNum(),MINx,MINy; for(int i=0;i<(Monitors);i++) { int x,y,dx,dy,Prm; GetDisplayInfo(i, &x,&y, &dx,&dy ,&Prm); if(Prm==TRUE){pWIx=dx;pWIy=dy;} if(mxWIx<dx)mxWIx=dx;if(mxWIy<dy)mxWIy=dy; if(i==0){MINx=dx;MINy=dy;}else{if(MINx>dx)MINx=dx;if(MINy>dy)MINy=dy;} } if(Wst==2){WIx=pWIx;WIy=pWIy;}else{WIx=mxWIx;WIy=mxWIy;} MOx=MINx*0.75;MOy=MINy*0.75; } void CTRL() { static int st=-1; if(Wst==2)//フルスクリーン { if(st!=2){ChangeWindowMode(FALSE);SetGraphMode( pWIx, pWIy,16);st=2; SetMouseDispFlag(TRUE);} } else if(Wst==1)//最大化 { if(st!=1) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode(mxWIx,mxWIy,16);}st=1; SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_TOOLWINDOW); SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_POPUP | WS_SYSMENU | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); ShowWindow( GetMainWindowHandle(),SW_MAXIMIZE ); } } else if(Wst==0)//ウィンドウ { if(st!=0) { if(st==2){ChangeWindowMode(TRUE); SetGraphMode( mxWIx,mxWIy,16);}st=0; ShowWindow( GetMainWindowHandle(),SW_RESTORE); SetWindowLongPtr(GetMainWindowHandle(),GWL_EXSTYLE,WS_EX_LEFT) ; SetWindowLongPtr(GetMainWindowHandle(),GWL_STYLE,WS_OVERLAPPEDWINDOW | WS_VISIBLE) ; SetWindowPos( GetMainWindowHandle(),NULL,0,0,0,0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); } } } int FRST() { GetMonitor(); if(Wst<2){ChangeWindowMode(1);SetGraphMode(WIx ,WIy ,16);} else { SetGraphMode(pWIx,pWIy,16);} SetWindowSizeChangeEnableFlag(1,0); if(Wst<2){SetWindowSize(MOx,MOy);} if( DxLib_Init()<0)return -1; SetChangeScreenModeGraphicsSystemResetFlag(0); SetDrawScreen( DX_SCREEN_BACK ); CTRL(); return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { Wst=2;//WIN状態 (2fullscreen 1maxwin 0win) FRST(); int mx,my,i=0,SCx,SCy,SCb=0; while( ProcessMessage() == 0 ) { ClearDrawScreen() ;GetMousePoint(&mx,&my) ;GetScreenState(&SCx,&SCy,&SCb) ; for(int i=0;i<50;i++){for(int i2=0;i2<50;i2++){if((i+i2)%1==0)DrawBox(1000*i,1000*i2,1000*i+990,1000*i2+990,GetColor(255,0,0),1);}} DrawFormatString( 0,10,GetColor(255,255,255),u8"x(%d) y(%d) Wst(%d)",mx,my,Wst); DrawFormatString( 0,30,GetColor(255,255,255),u8"SCx(%d) SCy(%d) SCb(%d)",SCx,SCy,SCb); DrawFormatString( 0,50,GetColor(255,255,255),u8"WIx(%d) WIy(%d)",WIx,WIy); ScreenFlip(); if(CheckHitKey(KEY_INPUT_A)&&i<0){Wst=0;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_S)&&i<0){Wst=1;CTRL();i=15;} if(CheckHitKey(KEY_INPUT_D)&&i<0){Wst=2;CTRL();i=15;}i--; if(CheckHitKey(KEY_INPUT_ESCAPE)){break;} } DxLib_End(); return 0; }
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.10 )
名前:管理人 日時:2021/06/09 22:26

ご返信が大変遅くなり申し訳ありません DXライブラリは最近 DPI設定が 100% 以外のときに内部で自動で SetWindowSizeExtendRate を実行して DPI設定が 100% のときと同じ 見た目の大きさで表示されるようにしましたので、それが関係していると思います DxLib_Init の呼び出し前に SetWindowSizeExtendRate( 1.0 ); という記述を追加することでDXライブラリ内部での自動設定が 行われなくなりますので、よろしければお試しください m(_ _)m ( 手元ではこれで Wst の値を 1 にしても 2 にしても問題なく  動作するようになりました ) # < 他スレッドの方へ > # 現在作業時間が非常に少なくなっています # 投稿の順番でご返信しますので今暫くお待ち下さい m(_ _)m
メンテ
Re: フルスクリーンとウィンドウモードの切り替えについて ( No.11 )
名前:たろう(解決) 日時:2021/06/10 21:47

いつもありがとうございます。 教えていただいた方法で 無事希望通りの表示が得られました。 お忙しい所お手数をおかけいたしました ありがとうございました<(_ _)>
メンテ

Page: 1 |

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

   クッキー保存