リファレンスを確認するとint SetActiveKeyInput(int InputHandle)は、キー入力が終了しているキー入力ハンドルを指定すると終了状態が 初期化され、再び入力出来るようにすることが出来ます。
との事ですが、簡単なプログラムで動作確認したところ思うように動作してくれません。
include "DxLib.h"
#include <string.h>
int InputHandle ; // 入力ハンドル
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// ウィンドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリ初期化
if( DxLib_Init() == -1 )
{
return -1 ;
}
// 入力領域と文字出力領域との境界線を引く
DrawLine( 0 , 320 , 640 , 320 , GetColor( 255 , 255 , 255 ) ) ;
// 文字列入力ハンドルを作成する
InputHandle = MakeKeyInput( 80 , FALSE , FALSE , FALSE ) ;
// 作成した入力ハンドルをアクティブにする
SetActiveKeyInput( InputHandle ) ;
SetKeyInputString( "ここに文章を入力してください" , InputHandle ) ;
// チャットループ
while( !ProcessMessage() )
{
// 文字列の入力が終っている場合
if( CheckKeyInput( InputHandle ) == 1 )
{
char Message[ 81 ] ;
// 入力された文字列を取得する
GetKeyInputString( Message , InputHandle ) ;
// 文字列表示域を黒で塗りつぶす
DrawBox( 0 , 0 , 640 , 320 , 0 , TRUE ) ;
// 入力した文字を描写する
DrawString( 0 , 0 , Message , GetColor( 255 , 255 , 255 ) ) ;
// 再度インプットハンドルをアクティブにする
SetActiveKeyInput( InputHandle ) ;
// 入力文字列を初期化する
SetKeyInputString( "" , InputHandle ) ;
}
// 画面に入力中の文字列を描画する
DrawBox( 0 , 320 + 2 , 640 , 480 , 0 , TRUE ) ;
DrawKeyInputString( 0 , 320 + 2 , InputHandle ) ;
DrawKeyInputModeString( 640 , 480 ) ;
}
// 時間待ち
WaitTimer( 3000 ) ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
原因分かる方いましたらご助言頂けると幸いです。