実行中にウインドウサイズを変更したい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ピーちゃん

実行中にウインドウサイズを変更したい。

#1

投稿記事 by ピーちゃん » 9年前

現在、DXライブラリとC言語を使って簡単なゲームを作っています。

ゲームの中には「ゲーム中でもウインドウサイズを変更できる」機能を追加したいと考えています。
デフォルトでは640×480ですが、これをプレイヤー自身がサイズを変更できるようにしたいと思っています。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	// タイトル変更
	SetMainWindowText( "GAME" ) ;
	ChangeWindowMode(TRUE);		//ウインドウモードに設定
	SetDrawScreen(DX_SCREEN_BACK);	//裏画面に設定

	int x = 640;
	int y = 480

	 while(1)
	 {
	    // 画面モードの変更
	    SetGraphMode( x , y, 32 ) ;
	    if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
	    {
	         return -1;    // エラーが起きたら直ちに終了
	    }

	    // キー待ち(『WaitKey』を使用)
	    WaitKey() ;
	 
	    x += 100;
	    y += 50;

	 }

    DxLib_End();    // DXライブラリ終了処理

    return 0;
}
キーが押されるたびに、xが100、yが50ずつサイズが変わっていくつもりで書きました。

しかしエラーというか不具合が出ました。
・サイズが変わらなかった。
・リビルドをすると「C\:USER\…\game.exeが開けません。」とでるようになり、手動で消さなければならなくなった。
 (手動で消そうとしても不定期で「ほかの人またはプログラムによって使用されています。」と出て消せないことも。)

実行中にサイズを変更する方法について、お力添えを願いたいです。
よろしくお願いいたします。

hide

Re: 実行中にウインドウサイズを変更したい。

#2

投稿記事 by hide » 9年前

Dxlibの細かい動作は覚えていませんが、何度もDxLib_Initを呼ぶのは気持ち悪い気がします。

ピーちゃん

Re: 実行中にウインドウサイズを変更したい。

#3

投稿記事 by ピーちゃん » 9年前

hide さんが書きました:Dxlibの細かい動作は覚えていませんが、何度もDxLib_Initを呼ぶのは気持ち悪い気がします。
ありがとうございます。
以下のように修正したところ、できました。

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    // タイトル変更
    SetMainWindowText( "GAME" ) ;
    ChangeWindowMode(TRUE);     //ウインドウモードに設定
    SetDrawScreen(DX_SCREEN_BACK);  //裏画面に設定
//セミコロンを追加(投稿時に忘れていました)
         if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
        {
             return -1;    // エラーが起きたら直ちに終了
        }
    int x = 640;
//セミコロンを追加(投稿時に忘れていました)
    int y = 480;

     while(1)
     {
        // 画面モードの変更
        SetGraphMode( x , y, 32 ) ;
 
        // キー待ち(『WaitKey』を使用)
        WaitKey() ;
        x += 100;
        y += 50;
     }
    DxLib_End();    // DXライブラリ終了処理
    return 0;
}
しかし、ビルド時の「1>LINK : fatal error LNK1104: ファイル 'C:\Users\*****\Downloads\GameProg\GameProg\Debug\GameProg.exe' を開くことができません。」が出てしまう件は解決しません。
名前の変更ならできますが、消そうとすると「Game.Prog.exeによってファイルは開かれているため、操作を完了できません」となり消せませんし…。
昨日まではこのようなメッセージは出なかったのに…。

この消せない件と、もっと効率のよい画面の再設定方法や考え方があればご享受ください。
よろしくお願いいたします。

hide

Re: 実行中にウインドウサイズを変更したい。

#4

投稿記事 by hide » 9年前

コード:

    DxLib_End();    // DXライブラリ終了処理
    return 0;
に到達し得ないのはよろしくないです。
ProcessMessage() を確認してください。

↓参考
http://homepage2.nifty.com/natupaji/DxL ... am.html#N1
http://dixq.net/g/01_08.html

また、
DxLib_Init
DxLib_End
ProcessMessage
ぐらいのリファレンスは読んでおくといいです。

閉鎖

“C言語何でも質問掲示板” へ戻る