いつも楽しく使わせて頂いています。
原因の分からないバグに当たってしまったので質問させてください。
起動時のウィンドウサイズ1280x720の状態では正しく表示されるのですが、ウィンドウサイズを変更して1280x720にすると"TEXT2","TEXT3"が表示されません。
でも、1280x720以外のサイズでは変更しても正しく表示されます。
//------再現コード------
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// ウィンドウモードの初期化
ChangeWindowMode(TRUE); // ウインドウモードに変更
SetGraphMode(1280, 720, 32); // 解像度指定
// グラフィックハンドル・グラフィックシステムの設定をリセットしない
SetChangeScreenModeGraphicsSystemResetFlag(FALSE);
// DXライブラリ初期化処理
if (DxLib_Init() == -1) return EXIT_FAILURE;
// 描画対象として使用できる、描画可能グラフィックハンドルを作成する
SetDrawValidGraphCreateFlag(TRUE);
int m_mainScreen = MakeScreen(1280, 720, FALSE);
int m_systemfontHandle = CreateFontToHandle(NULL, 14, 4, DX_FONTTYPE_ANTIALIASING_EDGE_8X8);
int windowX = 1280, windowY = 720;
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && CheckHitKey(KEY_INPUT_F10) == 0)
{
clsDx();
if (CheckHitKey(KEY_INPUT_F1))
{
if (windowX == 1760) { windowX = 960; windowY = 540; }
else if (windowX == 960) { windowX = 1280; windowY = 720; }
else if (windowX == 1280) { windowX = 1296; windowY = 729; }
else { windowX = 1760; windowY = 990; }
SetGraphMode(windowX, windowY, 32); // 解像度指定
ChangeWindowMode(TRUE); // ウインドウモードに変更
}
printfDx("ScreenSize X:%d,Y;%d", windowX, windowY);
SetDrawScreen(m_mainScreen);
DrawStringToHandle(200, 200, "TEXT1", GetColor(255, 255, 255), m_systemfontHandle);
SetDrawScreen(DX_SCREEN_BACK);
DrawExtendGraph(0, 0, windowX, windowY, m_mainScreen, TRUE);
DrawStringToHandle(windowX - 60, windowY - 20, "TEXT3", GetColor(255, 255, 255), m_systemfontHandle);
DrawStringToHandle(3, windowY - 20, "TEXT2", GetColor(255, 255, 255), m_systemfontHandle);
}
// DXライブラリ使用の終了処理
DxLib_End();
//ソフトの終了
return EXIT_SUCCESS;
}
//---------------------
再現コードはF1を押すとウィンドウサイズを順番に変更するようになっています。
再現コードは1920x1080の解像度のモニタで動作することを想定しています。
バーションはVer3.16f、OSはwindows10です。
お手数おかけしますがよろしくお願いいたします。