DXライブラリのテキスト入力

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

DXライブラリのテキスト入力

#1

投稿記事 by BL2 » 13年前

DXライブラリにてテキストボックスのようなものを作り、テキストを入力したいのですが、
InputKeyStringでは入力中に画像などが表示されなくなるので、
MakeKeyInputを使うことにしました。
しかし入力しても文字がうまく表示されません。なにがいけないのでしょうか?

コード:

// *************メインループ内*********************************************
int Handle= MakeKeyInput(80, FALSE, FALSE, FALSE);		// 全角文字入力ハンドル

// ボックスの描画
int Black = GetColor(0, 0, 0);
int White = GetColor(255, 255, 255);
DrawBox(249, 98, 701, 118, RM_Black, FALSE);
DrawBox(250, 99, 700, 117, RM_White, TRUE);

// テキストボックスの動作
int posX, posY;   // マウスポインタの座標格納
GetMousePoint(&RM_posX, &RM_posY);
if(posX >= 250 && posX <= 700 && posY >= 99 && posY <= 117){   // ボックスの上で
	if((GetMouseInput() & MOUSE_INPUT_LEFT)){   // クリックすると
		SetActiveKeyInput(Handle);   // 入力ハンドルをアクティブに
		DrawKeyInputString(0, 100, TxtBox_Zen);   // 入力途中の文字列を描画
	}
}

// *************以下略******************************************************
初心者ですのでおかしい点などの指摘お願いします。

BL2

Re: DXライブラリのテキスト入力

#2

投稿記事 by BL2 » 13年前

16行目TxtBox_ZenはHandleの間違いです

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: DXライブラリのテキスト入力

#3

投稿記事 by h2so5 » 13年前

このコードがすべてメインループ内にあるということは、
MakeKeyInputが毎フレーム呼ばれて初期化されてしまっているのではないでしょうか。

BL2

Re: DXライブラリのテキスト入力

#4

投稿記事 by BL2 » 13年前

すみません16行目
DrawKeyInputString(250, 100, Handle);でした。
ためしに値変えてみたままになってました。

文字が全く表示されません。なぜでしょうか?

BL2

Re: DXライブラリのテキスト入力

#5

投稿記事 by BL2 » 13年前

h2so5 さんが書きました:このコードがすべてメインループ内にあるということは、
MakeKeyInputが毎フレーム呼ばれて初期化されてしまっているのではないでしょうか。
MakeKeyInputの部分だけをメインループから外してみたんですがダメでした。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: DXライブラリのテキスト入力

#6

投稿記事 by h2so5 » 13年前

BL2 さんが書きました: MakeKeyInputの部分だけをメインループから外してみたんですがダメでした。
外したコードがどうなっているのか具体的に書いてください。

BL2

Re: DXライブラリのテキスト入力

#7

投稿記事 by BL2 » 13年前

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
	ChangeWindowMode(TRUE), SetGraphMode(800, 600, 32),SetBackgroundColor(80, 180 ,0);   //ウインドウの設定
	SetOutApplicationLogValidFlag(FALSE);   // ログ出力を行わない
	if(DxLib_Init() == -1) return -1;   //初期化、エラー発生で強制終了
	SetDrawScreen(DX_SCREEN_BACK);      //描画先を裏画面に設定
	SetChangeScreenModeGraphicsSystemResetFlag(FALSE);   //グラフィックハンドルのリセット防止
	SetMouseDispFlag(TRUE);   // マウスポインタを表示

	int Handle= MakeKeyInput(80, FALSE, FALSE, FALSE);      // 全角文字入力ハンドル

	while(ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0){

		// ボックスの描画
		int Black = GetColor(0, 0, 0);
		int White = GetColor(255, 255, 255);
		DrawBox(249, 98, 701, 118, Black, FALSE);
		DrawBox(250, 99, 700, 117, White, TRUE);
 
		// テキストボックスの動作
		int posX, posY;   // マウスポインタの座標格納
		GetMousePoint(&posX, &posY);
		if(posX >= 250 && posX <= 700 && posY >= 99 && posY <= 117){   // ボックスの上で
			if((GetMouseInput() & MOUSE_INPUT_LEFT)){   // クリックすると
				SetActiveKeyInput(Handle);   // 入力ハンドルをアクティブに
				DrawKeyInputString(250, 100, Handle);   // 入力途中の文字列を描画
			}
		}
										
	}

	DxLib_End();   //DXライブラリ終了処理
	return 0;
}
こんなかんじです

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: DXライブラリのテキスト入力

#8

投稿記事 by h2so5 » 13年前

試してみましたけど、表示されますよ。
マウスボタンを押している間だけですけど。

BL2

Re: DXライブラリのテキスト入力

#9

投稿記事 by BL2 » 13年前

h2so5 さんが書きました:試してみましたけど、表示されますよ。
マウスボタンを押している間だけですけど。
ああああああ!
なるほど、そういうことですか
ありがとうございます。全然気づきませんでしたw

BL2

Re: DXライブラリのテキスト入力

#10

投稿記事 by BL2 » 13年前

修正します。
ありがとうございました。

閉鎖

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