DXライブラリにいつも大変お世話になっております。
自分の環境において、「縦」表示にしている「サブ(メインでない)ディスプレイ内」に
「ウィンドウモード」でウィンドウを初期表示させた後、
「SetWindowSizeExtendRate」でウィンドウ拡大率を変更すると、
「メインディスプレイ側にウィンドウが移動する」挙動が見られましたのでご報告いたします。
詳細は以下の通りです。
【現象を再現した画像】
silversecond.net/tmp/20260219_DxLib_Window.jpg
再現状況は以下の通りです。
1.Windows11のシステム→ディスプレイで、
「メインディスプレイ」に設定したディスプレイ1(横向き)と、
ディスプレイ2(縦向き)を「表示画面を拡張する」で繋げている
[ディスプレイ1:横1920×縦1080 (横向き・100%表示)]
[ディスプレイ2:横1080×縦1920 (縦向き・100%表示)]
2.ディスプレイ2にウィンドウを初期表示した後に
SetWindowSizeExtendRateを行うと、ディスプレイ1側の左上に
画面が張り付くように表示される(画面写真のA)
[ 期待する動作: ディスプレイ2内にあるままウィンドウ拡大率が変わって欲しい ]
また、↓の再現コードにおいて、DxLib_Initを実行する「前」に
SetWindowSizeExtendRateを行うと、初期表示の時点で
上記画面写真のAのような状態になりました。
一方、以下のケースでは期待通り、初期表示時と同じディスプレイ内で
ウィンドウ拡大率が変化することを確認しました。
- ディスプレイ1(横・メイン)に初期表示してSetWindowSizeExtendRate
- 「横」にしたディスプレイ2(メインでない)で初期表示してSetWindowSizeExtendRate
- ディスプレイ2を「縦」かつ「メイン」にして2に初期表示してSetWindowSizeExtendRate
【再現コード】
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE); // ウィンドウモードに
// ウィンドウは「メインディスプレイでない縦ディスプレイ」に初期表示してみてください
SetUseDisplayIndex(1); // ←「縦向き」の「メインでないディスプレイ」に出るよう番号を変更してください
//SetWindowSizeExtendRate(0.8); // このコメントアウトを外すと、DxLib_Init直後にメインディスプレイ端にウィンドウが表示されました
if (DxLib_Init() == -1) { return -1; } // DXライブラリ初期化処理
DrawString(20, 120, "何かキーを押すと進みます", GetColor(255, 255, 255));
WaitKey();// キー入力待ち
DrawString(20, 140, "キーが押されました、もう一度押すと終了します", GetColor(255, 255, 255));
SetWindowSizeExtendRate(0.8); // ウィンドウサイズを変えるとメインディスプレイ端にウィンドウが表示されます
WaitKey();// キー入力待ち
DxLib_End(); // DXライブラリの後始末
return 0; // ソフトの終了
}
【その他】
・使用させていただいたDXライブラリは2026/02/18の22時に
ダウンロードさせていただいたDxLibVCTest.zip、Ver3.25です。
x86(32bit)でコンパイルしています。
・OSは「Windows11 Home 25H2 (OSビルド 26200.7840)」です。
・他のかた1名の環境でも異常が起きるという報告をいただいております。
以下の画像のディスプレイ構成でディスプレイ2に「拡大率を変えたウィンドウ」を初期表示しようとした際、
ウィンドウがディスプレイ1に下半分埋もれる形で立ち上がる、という内容でした。
silversecond.com/WolfRPGEditor/BBS/file/20260216_0901_44_1.png
ご多忙のところ恐縮ですが、よろしければ一度ご確認いただけますと幸いです。