トップページ > 過去ログ > 記事閲覧
KeyInputStringに関して
名前:よしー 日時: 2009/11/04 01:46

すいません、 KeyInputStringに関して 教えて欲しいのですが while(xxx){ KeyInputString(0,0,30,yyy,FALSE); } while文の中でKeyInputStringは 抜ける事はできるでしょうか? どうにかして抜けたいのですが・・・。 while(CheckHitKey(KEY_INPUT_ESCAPE) == 0){ KeyInputString(0,0,30,yyy,FALSE); } で抜けられませんでした。 よろしくお願いします。

Page: 1 |

Re: KeyInputStringに関して ( No.1 )
名前:Will 日時:2009/11/04 13:14

質問の意味がいまいちよくわからないのですが、KeyInputString実行中にESCを押されたときに whileループからも抜けたいということでよろしいでしょうか? リファレンスにESCが押された場合は2が返る、と書いていますから while(...){ if (KeyInputString(0,0,30,yyy,FALSE) == 2) break; } でいいと思いますよ。
Re: KeyInputStringに関して ( No.2 )
名前:よしー 日時:2009/11/04 14:49

ソースはこんな感じなのですが while文のKeyInputString実行中に ESCを押しても抜けられなかったのです。 以下ソース #include "DxLib.h" #include <string.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetGraphMode( 800 , 600 , 32 ) ; ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } char moji[2]="a"; while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){ KeyInputString(0,500,2,moji,FALSE); if(strcmp(moji, "1") == 0){ DrawString( 200 , 500 , "OK!" , GetColor( 255 , 255 , 255 ) ) ; } else{ DrawString( 200 , 500 , "NO!" , GetColor( 255 , 255 , 255 ) ) ; } } WaitKey(); DxLib_End() ; return 0 ; }
Re: KeyInputStringに関して ( No.3 )
名前:よしー 日時:2009/11/04 15:54

Will様 返信ありがとうございます。 >質問の意味がいまいちよくわからないのですが、KeyInputString実行中にESCを押されたときに whileループからも抜けたいということでよろしいでしょうか? 質問の説明がヘタクソですいません。 まさに聞きたかった事がそれでした。 >while(...){ if (KeyInputString(0,0,30,yyy,FALSE) == 2) break; } if (KeyInputString(0,0,30,yyy,FALSE) == 2) こういう使い方もできるのですね。
Re: KeyInputStringに関して ( No.4 )
名前:管理人 日時:2009/11/05 12:51

KeyInputString の第5引数 int CancelValidFlag を TRUE にしないと ESC キーによる キャンセルはできないようになっています
Re: KeyInputStringに関して ( No.5 )
名前:よしー 日時:2009/11/05 13:58

管理人様 返信ありがとうございます。 >KeyInputString の第5引数 int CancelValidFlag を TRUE にしないと ESC キーによる キャンセルはできないようになっています 分かりました。 ESCキーでキャンセルする場合には TRUEを使うのですね。
Re: KeyInputStringに関して ( No.6 )
名前:よしー 日時:2009/11/05 14:21

Will様、管理人様 おかげさまで、 while文でKeyInputStringを実行中に ESCキーを押してループを抜けられました。 ありがとうございました。 以下ソース #include "DxLib.h" #include <string.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetGraphMode( 800 , 600 , 32 ) ; ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } char moji[2]="a"; while( ProcessMessage() == 0 ){ ClearDrawScreen(); if (KeyInputString(0,500,30,moji,TRUE) == 2){ break; } if(strcmp(moji, "1") == 0){ DrawString( 200 , 500 , "OK!" , GetColor( 255 , 255 , 255 ) ) ; } else{ DrawString( 200 , 500 , "NO!" , GetColor( 255 , 255 , 255 ) ) ; } WaitTimer(300); } DxLib_End() ; return 0 ; }

Page: 1 |