CreateFontToHandleのハンドルはグローバル関数で出来ない?

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

CreateFontToHandleのハンドルはグローバル関数で出来ない?

#1

投稿記事 by レッド » 1週間前

以下のソースコードにおいて質問させて頂きます。
グローバル変数として定義したFont00、Font01が共に戻り値がー1になります。
Font00、Font01に代入しているCreateFontToHandleの戻り値-1となるのはエラーを意味しています。
しかし、仮にFont00、Font01をint WINAPI WinMain内で宣言(ローカル変数)すると戻り値-1にならず
エラーにはなりません

なぜでしょうか?
CreateFontToHandleはグローバル変数では使えないということでしょうか?

コード:

 
 //追加するヘッダーファイル宣言
#include "DxLib.h"                //DXライブラリ使用可能になるファイル

//色変数定義
int White = GetColor(255, 255, 255);

int Font00 = CreateFontToHandle("メイリオ", 70, 3, DX_FONTTYPE_ANTIALIASING_EDGE);
int Font01 = CreateFontToHandle("MS ゴシック", 50, 9, DX_FONTTYPE_NORMAL);


int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(TRUE);                   //ウィンドウモード
	DxLib_Init();                             //DXライブラリ開始処理
	SetDrawScreen(DX_SCREEN_BACK);            //描画先を裏画面に設定

	while (ScreenFlip() == 0 &&               //裏画面を表画面に反映
		ProcessMessage() == 0 &&              //メッセージ処理
		ClearDrawScreen() == 0 )             //画面を消す
	{
		DrawFormatString(0, 40, White,"%d", Font00);
		DrawFormatString(0, 200,White,"%d", Font01);
	}

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

Bull
記事: 142
登録日時: 6年前

Re: CreateFontToHandleのハンドルはグローバル関数で出来ない?

#2

投稿記事 by Bull » 1週間前

レッド さんが書きました:
1週間前
CreateFontToHandleはグローバル変数では使えないということでしょうか?
確認してないのですが、そんなことないとおもいます。
外部変数(グローバル変数)は main() 関数が呼ばれる前に初期化されます。
DxLib_Init() 関数を呼ぶ前に、CreateFontToHandle() 関数でフォントを作成しているので、単に失敗しているだけかと。

Font00 と Font01 はそのまま外部で定義しておき、DxLib_Init() の後に CreateFontToHandle() すればいいのではないでしょうか。

レッド

Re: CreateFontToHandleのハンドルはグローバル関数で出来ない?

#3

投稿記事 by レッド » 1週間前

ご回答ありがとうございます!
ご指摘頂いた方法で検討した結果
出来ました!

同じくGetColor関数はmain関数外でも使えるので
ややこしいですね。
GetColor関数もDxlibの関数だと思うので…

ありがとうございます!

返信

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