ウィンドウとフルスクリーンの切り替えについて不明な点があり、質問させて頂きます。
プログラム動作中にウィンドウとフルスクリーンを切り替えしたいと考えているのですが、
希望通りに動作しません。
#include "DxLib.h"
void changeScreen(int);
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
int screen_mode = 0; // 画面設定
changeScreen(screen_mode); // スクリーンの切り替え
if (DxLib_Init() == -1) return -1; // DXライブラリの初期化、失敗したら終了
int Cr = GetColor(255, 255, 255); // 白色の値を取得
while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
switch (screen_mode) {
case 0:
DrawString(0, 0, "ウィンドウモード", Cr);
break;
case 1:
DrawString(0, 0, "フルスクリーン(解像度変更無し)", Cr);
break;
case 2:
DrawString(0, 0, "フルスクリーン(解像度変更有り)", Cr);
break;
}
WaitKey(); // キー入力があるまで待つ
screen_mode = (screen_mode + 1) % 3; // 画面設定の変更
changeScreen(screen_mode); // スクリーンの切り替え
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // 終了
}
void changeScreen(int i) {
switch (i) {
case 0:
ChangeWindowMode(TRUE); // ウインドウモードを宣言
break;
case 1:
SetFullScreenResolutionMode(DX_FSRESOLUTIONMODE_DESKTOP); // 解像度変更無しの設定
ChangeWindowMode(FALSE); // フルスクリーンモードを宣言
break;
case 2:
SetFullScreenResolutionMode(DX_FSRESOLUTIONMODE_NATIVE); // 解像度変更有りの設定
ChangeWindowMode(FALSE); // フルスクリーンモードを宣言
break;
}
return;
}
これは、何かキーを押す度に、「ウィンドウ」「モニタ解像度変更無しのフルスクリーン」「モニタ解像度変更有りのフルスクリーン」の順に
画面が切り替わるプログラムです。
実行すると「モニタ解像度変更有りのフルスクリーン」が、何故か「モニタ解像度変更無しのフルスクリーン」になってしまいます。
また、上記プログラムのint screen_mode = 0;の初期数値を2に変更して実行すると、「モニタ解像度変更有りのフルスクリーン」に
なりますが、何かキーを押して「ウィンドウ」にするとウィンドウモードにはなるのですが、何故かタイトルバーが表示されません。
また、もう1回何かキーを押すと「モニタ解像度変更無しのフルスクリーン」になるはずが「モニタ解像度変更有りのフルスクリーン」に
なってしまいます。
どうすれば正常な動作になるのでしょうか?
使用OSはWindows10 1903です。
何卒、よろしくお願い申し上げます。