いつもお世話になっております
MakeKeyInputでの全角半角切り替えについて確認させていただけないでしょうか?
以下のように全角半角を切り替えながら何度か文字入力を行うと半角入力時に入力を受け付けなくなります
・MakeKeyInputのテストコードを元に作成した下記のコードを実行する
・全角に切り替えて全角文字を入力してEnter(入力モードは全角のままにしておく)
・あなたが入力した文字列は〜と表示するのでもう一度Enter
・右下に[半角英数]と表示されており、半角入力が不能になる
解決方法はございますでしょうか?
使用しているDXライブラリは3.24a
OSはWindows 10 Pro
使用言語は C++ VS2019
です
類似質問
dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3041
#include "DxLib.h"
void Sub(int InputHandle)
{
char String[256];
int y = 0;
// 作成したキー入力ハンドルをアクティブにする
SetActiveKeyInput(InputHandle);
// キー入力終了待ちループ
// (ProcessMessageをループごとに行う)
while (!ProcessMessage())
{
// 画面の初期化
ClearDrawScreen();
// 入力が終了している場合は終了
if (CheckKeyInput(InputHandle) != 0) break;
// 入力モードを描画
DrawKeyInputModeString(640, 480);
// 入力途中の文字列を描画
DrawKeyInputString(0, y, InputHandle);
// 裏画面の内容を表画面に反映させる
ScreenFlip();
}
y += 16;
// 入力された文字列を取得
GetKeyInputString(String, InputHandle);
// 用済みのインプットハンドルを削除する
DeleteKeyInput(InputHandle);
// 入力された文字列を画面に表示する
DrawString(0, y, "あなたが入力した文字列は", GetColor(255, 255, 255));
y += 16;
DrawString(0, y, String, GetColor(255, 255, 255));
y += 16;
// 裏画面の内容を表画面に反映させる
ScreenFlip();
// 用済みのインプットハンドルを削除する
DeleteKeyInput(InputHandle);
// キー入力待ち
WaitKey();
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int InputHandle;
// DXライブラリの初期化
if (DxLib_Init() == -1) return -1;
ChangeWindowMode(TRUE);
// 描画先を裏にする
SetDrawScreen(DX_SCREEN_BACK);
// キー入力ハンドルを作る(キャンセルなし、全角文字有り、数値入力なし)
InputHandle = MakeKeyInput(50, TRUE, FALSE, FALSE);
Sub(InputHandle);
// キー入力ハンドルを作る(キャンセルなし、全角文字なし、数値入力なし)
InputHandle = MakeKeyInput(50, TRUE, TRUE, FALSE);
Sub(InputHandle);
// DXライブラリの使用終了
DxLib_End();
// 終了
return 0;
}