ページ 11

[DxLib] GetKeyInputString()について

Posted: 2017年12月09日(土) 09:08
by 悩める人
例えば、以下の例で問題が起きます。

コード:


#include <DxLib.h>

int main() {

	int x, y;
	TCHAR *text;
	int keyInput;
	int result;

	x = 320;
	y = 240;
	text = NULL;
	result = 0;

	DxLib_Init();

	keyInput = MakeKeyInput(16, false, false, false, false, false);
	SetActiveKeyInput(keyInput);

	while (!ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE)) {

		int result = CheckKeyInput(keyInput);

		GetKeyInputString(text, keyInput);

		if (text != NULL) {
			x = (640 - GetDrawStringWidth(text, GetStringLength(text))) / 2;
		}

		if (result == 0) {
			DrawKeyInputString(x, y, keyInput);

		}
		else {
			break;

		}

	}

	DeleteKeyInput(keyInput);

	DxLib_End();

}

※エラー処理は省略しています。

>GetKeyInputString(text, keyInput);
この部分でtextがNULLにしかなりません。

なぜですか?

Re: [DxLib] GetKeyInputString()について

Posted: 2017年12月09日(土) 10:00
by V30
NULL値は、記憶領域がないよって意味になります。

http://dxlib.o.oo7.jp/function/dxfunc_input.html#R5N22
に、
引数 char *StrBuffer : 文字列を格納するバッファのアドレス
と書いてあるので、
バッファを作ってから関数を使えばいいと思いますよ。

つまり、

コード:

char text[1024];
みたいに文字列格納バッファ(記憶領域)を作って、
そいつを GetKeyInputString 関数に放り込めば良い
と思います。

Re: [DxLib] GetKeyInputString()について

Posted: 2017年12月09日(土) 19:20
by 悩める人
なるほど。あらかじめ領域を指定しておかなければいけなかったんですね。ありがとうございます。