非公開関数の SetWindowSizeChangeEnableFlag に第一引数と第二引数に FALSE を渡して呼んだ上で
同じく非公開関数の SetWindowSize でウインドウのサイズを指定すると縦横の比率を保たない
ウインドウサイズの変更ができます
ただ、SetWindowSize は SetGraphMode で指定した画面サイズ以上のサイズにすることができませんので、
予め SetWindowSize で指定したい最大サイズを SetGraphMode で指定しておく必要があります
1秒毎にウインドウサイズが 640x480 と 480x640 で切り替わるプログラムを組んでみましたので、
よろしければご覧ください
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int x, add ;
int NowTime ;
int ChangeTime ;
int ScreenMode ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// ウインドウのサイズを手動ではできず、且つウインドウのサイズに合わせて拡大もしないようにする
SetWindowSizeChangeEnableFlag( FALSE, FALSE ) ;
// 画面サイズは最大の 640x640 にしておく
SetGraphMode( 640, 640, 32 ) ;
// 最初は 640x480 にしておく
ScreenMode = 0 ;
SetWindowSize( 640, 480 ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 起動時の時間を保存しておく
ChangeTime = GetNowCount() ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 画面内を左右に移動する四角の処理の初期化
x = 0 ;
add = 8 ;
// メインループ(何かキーが押されたらループを抜ける)
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
// 画面内を左右に移動する四角の処理
x += add ;
if( x < 0 || x >= 640 )
{
add = -add ;
}
DrawBox( x, 0, x + 32, 32, GetColor( 255,255,255 ), TRUE ) ;
// 1秒経過したら画面サイズを切り替える
NowTime = GetNowCount() ;
if( NowTime - ChangeTime >= 1000 )
{
if( ScreenMode == 0 )
{
ScreenMode = 1 ;
SetWindowSize( 480, 640 ) ;
}
else
{
ScreenMode = 0 ;
SetWindowSize( 640, 480 ) ;
}
ChangeTime = NowTime ;
}
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}