いつもお世話になっています。
概ね題名通りです。
まず全角で28字を超える文字を入れ、GetKeyInputに通すと28字まで切り落とされます。
28+6からは少しフリーズしてから動作が停止(クラッシュ)します。
28+11からは例外が発生します。
言語は、C#。環境は、Visual Studio Community 2017。OSは、Windows 10 home(64bit)になります。
C#特有の問題なのでしょうか・・・。どうかよろしくお願いします!
以下、テスト用にコードを置いておきます。
static class Program
{
[STAThread]
static void Main()
{
DX.SetGraphMode(900, 600, 32);
DX.ChangeWindowMode(1);
DX.DxLib_Init();
DX.SetDrawScreen(DX.DX_SCREEN_BACK);
int keyinput = -1;
string str = "入力した文字列がここに表示されます。";
while (DX.ProcessMessage() != -1)
{
DX.ClearDrawScreen();
if(DX.CheckHitKey(DX.KEY_INPUT_SPACE)==1)
{
DX.DeleteKeyInput(keyinput);
keyinput = DX.MakeKeyInput(100, 1, 0, 0);
DX.SetActiveKeyInput(keyinput);
//DX.SetKeyInputString(new string('あ',28+0),keyinput);
}
if (DX.CheckKeyInput(keyinput) == 1)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
DX.GetKeyInputString(sb, keyinput);
str = sb.ToString();
}
DX.DrawKeyInputString(137, 100, keyinput);
DX.DrawString(137, 120, str, DX.GetColor(255, 255, 255));
DX.DrawString(150, 60, "+6〜動作を停止", DX.GetColor(255, 255, 255));
DX.DrawString(200, 40, "+11〜System.AccessViolationException' のハンドルされていない例外が発生", DX.GetColor(255, 255, 255));
DX.DrawString(0, 80, "28字まで保持:123456789ABCDEF123456789ABCD", DX.GetColor(255, 255, 255));
DX.ScreenFlip();
}
DX.DxLib_End();
}
}