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 ;
}
|
|