DirectXでのウィンドウサイズ指定

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
SEDO
記事: 2
登録日時: 11年前

DirectXでのウィンドウサイズ指定

#1

投稿記事 by SEDO » 11年前

初めまして。
挨拶代わりに初歩的な質問をさせてください。

コード:

int WSize[2];

WSize[0] = 800;
WSize[1] = 480;
SetWindowSize(WSize[0], WSize[1]);
これを行ってもウィンドウのサイズが変更されないのですが・・・どうすると変更できるのでしょうか?
このほかに必要とする情報がわからないので、とりあえず上記のコードが書かれているcppのみ以下に記します。
なお、作ってるのはパズルゲームで、ファイル構造はこんな感じです。

Main.cpp・・・メインプログラム(?)がある・・・今のコード
Input.cpp(.h)・・・キーボードの入力状況を更新する関数が入ってる
VDef.cpp(.h)・・・全cppファイル用の変数定義が入ってる
Scene.cpp(.h)・・・以下3つの更新関数と描画関数を統括
Start.cpp(.h)・・・最初の画面の更新関数と描画関数
Menu.cpp・・・メニュー画面の更新関数と描画関数(何もしていない)
Game.cpp(.h)・・・ゲーム画面の更新関数と描画関数

Main.cppの中身↓

コード:

#include <stdio.h>
#include <tchar.h>
#include "DxLib.h"
#include "Scene.h"
#include "Game.h"
#include "Input.h"
#include "VDef.h"
#define PI 3.141592654


void Loadfont(){
	LPCSTR font_path = "HuiFont109.ttf"; // 読み込むフォントファイルのパス
	if (AddFontResourceEx(font_path, FR_PRIVATE, NULL) > 0) {
	}
	else {
		// フォント読込エラー処理
		MessageBox(NULL, "フォント読込失敗", "", MB_OK);
	}
	ChangeFont("ふい字", DX_CHARSET_DEFAULT);
	ChangeFontType(DX_FONTTYPE_ANTIALIASING);
}
void LoadFile(void){
	int ret, i = 0;
	FILE *file;
	file = fopen("list.txt", "r");
	while ((ret = fscanf(file, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
		&Tile[0][i][0], &Tile[0][i][1], &Tile[1][i][0], &Tile[1][i][1],
		&Tile[2][i][0], &Tile[2][i][1], &Tile[3][i][0], &Tile[3][i][1], &Tile[4][i][0], &Tile[4][i][1])) != EOF){
		i++;
	}
	fclose(file);
	for (i = 0; i < TBase[0]; i++){
		for (int j = 0; j < TBase[1]; j++){
			Tile[i][j][2] = 0;
			Move[i][j] = 9;
			MoveV[i][j] = 0;
		}
	}
	Move[2][3] = 22;
	//初期グレータイル移動時のバグを修正
	MTile[1][4] = Tile[0][0][0];

}

void LoadAll(){
	SetWindowIconID(101);
	SetMainWindowText("ぱずるーと2014(タイル挙動試験)");
	WSize[0] = 800;
	WSize[1] = 480;
	SetWindowSize(WSize[0], WSize[1]);
	ChangeWindowMode(TRUE),	DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK); // ウィンドウモードに設定,DXライブラリ初期化処理,描画先を裏画面に設定
	Center[0] = WSize[0] / 2;
	Center[1] = WSize[1] / 2;
	TBase[0] = 4;
	TBase[1] = 4;
	MTile[2][0] = 2;
	MTile[2][1] = 2;
	MTile[2][3] = 255;
	MTile[3][0] = MTile[2][0];
	MTile[3][1] = MTile[2][1];
	MTile[3][3] = 0;
	MTile[0][3] = 0;
	MTile[1][3] = 0;
	lg = 0;
	LoadDivGraph("tile.png", 12, 4, 3, 60, 60, Image.Tile); //タイル画像ロード
	Image.Start[0] = LoadGraph("TitleLine.png");
	Image.Start[1] = LoadGraph("Title.png");
	Image.Start[2] = LoadGraph("Hajimeru.png");
	Loadfont();
	LoadFile();
}

//総合プログラム
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	LoadAll();
	lgCount = 0;	//ログ表示カウント
	
	SceneMain();	//各種画面へのアクセス

	DxLib_End();    //DXライブラリ終了処理
	return 0;
}
よろしくお願いします。

rascal
記事: 27
登録日時: 11年前

Re: DirectXでのウィンドウサイズ指定

#2

投稿記事 by rascal » 11年前

おはようございます

ウィンドウには表面的なサイズと内部的なサイズがあり、SetWindowSize は表面的なサイズを変更するための関数です。
内部的なウィンドウのサイズを変更したい場合は SetGraphMode を使用します。

詳細は
こちらの掲示板
を参照してみてください

SEDO
記事: 2
登録日時: 11年前

Re: DirectXでのウィンドウサイズ指定

#3

投稿記事 by SEDO » 11年前

リンクのおかげでSetWindowSizeとSetGraphModeの違いの理解も深まりました。
親切にありがとうございます。

閉鎖

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