トップページ > 記事閲覧
ウィンドウの大きさを自由に変えられるか
名前:阿呆 馬鹿 日時: 2015/07/31 15:07

初めまして、この度質問させていただく阿呆馬鹿という者です。 ウィンドウの大きさ縦横に自由に変えたい時、ChangeWindowMode();を使うと縦横の比率を保った状態でウィンドウの大きさが変わるのですが、縦横の比率を保たずウィンドウの大きさを変えることは可能でしょうか。
メンテ

Page: 1 |

Re: ウィンドウの大きさを自由に変えられるか ( No.1 )
名前:管理人 日時:2015/08/01 15:37

非公開関数の 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 ; }
メンテ
(解決)ウィンドウの大きさを自由に変えられるか ( No.2 )
名前:阿呆 馬鹿 日時:2015/08/02 18:55

上手くいけました。 ご回答ありがとう御座いました。
メンテ
Re: ウィンドウの大きさを自由に変えられるか ( No.3 )
名前:阿呆 馬鹿(解決) 日時:2015/08/02 18:57

[解決]をつけ忘れていたため、付けておきます。
メンテ

Page: 1 |

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

   クッキー保存