トップページ > 記事閲覧
ウィンドウとフルスクリーンの切り替えについて
名前:ひろかず 日時: 2020/02/22 17:08

 ウィンドウとフルスクリーンの切り替えについて不明な点があり、質問させて頂きます。 プログラム動作中にウィンドウとフルスクリーンを切り替えしたいと考えているのですが、 希望通りに動作しません。 #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です。 何卒、よろしくお願い申し上げます。
メンテ

Page: 1 |

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

ご返信が遅くなり申し訳ありません すみません、リファレンスにあります通り、SetFullScreenResolutionMode は DxLib_Init を 呼ぶ前にのみ実行することが可能な関数となっています >  また、上記プログラムのint screen_mode = 0;の初期数値を2に変更して実行すると、「モニタ解像度変更有りのフルスクリーン」に > なりますが、何かキーを押して「ウィンドウ」にするとウィンドウモードにはなるのですが、何故かタイトルバーが表示されません。 手元で試した限りではタイトルバーは表示されました 私が手元で試した最新のバージョンでは直っている、というケースかもしれませんので、よろしければこちらの暫定最新版を お試しになってみてください 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 )
名前:ひろかず(解決) 日時:2020/02/25 20:19

>>管理人様 ご返信頂き、誠に有り難うございます。 >すみません、リファレンスにあります通り、SetFullScreenResolutionMode は DxLib_Init を >呼ぶ前にのみ実行することが可能な関数となっています 見逃しておりました。私の確認ミスです。 大変申し訳ございません。 >>  また、上記プログラムのint screen_mode = 0;の初期数値を2に変更して実行すると、「モニタ解像度変更有りのフルスクリーン」に >> なりますが、何かキーを押して「ウィンドウ」にするとウィンドウモードにはなるのですが、何故かタイトルバーが表示されません。 > >手元で試した限りではタイトルバーは表示されました >私が手元で試した最新のバージョンでは直っている、というケースかもしれませんので、よろしければこちらの暫定最新版を >お試しになってみてください m(_ _)m 暫定最新版にてリビルドした所、タイトルバーが表示されるようになり、無事問題が解決しました。 誠に有り難うございました。
メンテ

Page: 1 |

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

   クッキー保存