別の場所をクリックされたら入力途中から入力完了にするには?
Posted: 2013年2月26日(火) 19:29
IDとパスの入力欄をGetKeyInputString等を使って2つ作ってIDのほうで入力していた時に入力完了させるにはエンターキーを最後に押すことで入力完了になるとは思いますが、
エンターキーを押さなくても入力欄とは別の場所をクリックすることで入力完了にしたいのですがどうすればいいかがわかりません
どのようにすれば別の場所をクリックされたら入力途中から入力完了になりますか?
エンターキーを押さなくても入力欄とは別の場所をクリックすることで入力完了にしたいのですがどうすればいいかがわかりません
どのようにすれば別の場所をクリックされたら入力途中から入力完了になりますか?
int login_pont(void){
int MouX,MouY;
while(ProcessMessage() == 0 ){
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) {
GetMousePoint( &MouX, &MouY );
if( ( ( SCREEN_X / 2 - 90 ) < MouX && MouX < ( SCREEN_X / 2 + 90 ) )&&
( ( SCREEN_Y / 2 + 25 ) < MouY && MouY < ( SCREEN_Y / 2 + 45 ) ) ){
return 0; //ゲーム終了
}
else if( ( ( SCREEN_X / 2 - 87 ) < MouX && MouX < ( SCREEN_X / 2 + 38 ) )&&
( ( SCREEN_Y / 2 - 22 ) < MouY && MouY < ( SCREEN_Y / 2 - 2 ) ) ){
return 1; //ログインボックス
}
else if( ( ( SCREEN_X / 2 - 87 ) < MouX && MouX < ( SCREEN_X / 2 + 38 ) )&&
( ( SCREEN_Y / 2 + 2 ) < MouY && MouY < ( SCREEN_Y / 2 + 22 ) ) ){
return 2; //パスボックス
}
else if( ( ( SCREEN_X / 2 + 41 ) < MouX && MouX < ( SCREEN_X / 2 + 89 ) )&&
( ( SCREEN_Y / 2 - 24 ) < MouY && MouY < ( SCREEN_Y / 2 + 24 ) ) ){
return 3; //入力完了
}
else{
return 4;
}
}
}
return 0;
}
int login(void){
int black = GetColor(0,0,0);
int white = GetColor(255,255,255);
int white_s = GetColor(254,254,254);
int blue = GetColor(0,0,255);
int blue_s = GetColor(96,96,255);
int red = GetColor(255,0,0);
char id_buf[26]="";
char pass_buf[26]="";
int itihan = NULL;
int kaku;
SetTransColor(80,80,40);
int read = LoadGraph( "itt.bmp" );
int log= LoadGraph( "log_k.bmp" );
SetDrawScreen( DX_SCREEN_BACK );
SetMouseDispFlag( TRUE );
int id_s = MakeKeyInput( 8 , FALSE , FALSE , FALSE );
int pass_s = MakeKeyInput( 8 , FALSE , FALSE , FALSE );
char *id_m ="IDを入力してください";
char *pa_m ="PASSを入力してください";
char *ip_m ="IDもしくはPASSが違います";
int id_n = GetDrawStringWidth( id_m , strlen( id_m ) ) ;
int pa_n = GetDrawStringWidth( pa_m , strlen( pa_m ) ) ;
int ip_n = GetDrawStringWidth( ip_m , strlen( ip_m ) ) ;
SetKeyInputStringColor(
black, //文字色
black, //変換しない場合の右の線の色
white_s, //変換中の変換候補の背景色
black, //変換中の右の線の色
white, //変換中のアンダーライン
blue_s, //変換中の文字の色
white, //???
white, //???
white, //???
white, //???
blue, //変換中の枠の色
white_s //変換中の背景色
);
DrawGraph( 0 , 0 , read , FALSE ) ;
DrawGraph( SCREEN_X / 2 - 90 , SCREEN_Y / 2 -45 , log , TRUE ) ;
ScreenFlip();
while(ProcessMessage() == 0 ){
itihan =login_pont();
if( itihan == 0){ //ゲーム終了ボタンが押される
return 999; //ゲーム終了
}
if( itihan == 1){ //IDボックスの位置が押される
SetActiveKeyInput( id_s );
while(ProcessMessage() == 0 ){
if( CheckKeyInput( id_s ) !=0 ){
if(itihan != 1 ){
//別の場所をクリックされたら入力途中から入力完了にしたい
GetKeyInputString( id_buf , id_s );
break;
}
GetKeyInputString( id_buf , id_s );
break;
}
DrawGraph( 0 , 0 , read , FALSE );
DrawGraph( SCREEN_X / 2 - 90 , SCREEN_Y / 2 -45 , log , TRUE );
if( strcmp(pass_buf,"") !=0){
DrawString( SCREEN_X / 2 - 47 , SCREEN_Y / 2 +4 , pass_buf, black );
}
DrawKeyInputString( SCREEN_X / 2 - 47 , SCREEN_Y / 2 - 20 , id_s ) ;
ScreenFlip() ;
}
}
if( itihan == 2){ //パスボックスの位置が押される
SetActiveKeyInput( pass_s );
while(ProcessMessage() == 0 ){
if( CheckKeyInput( pass_s ) != 0 ){
if( itihan != 2 ){
//別の場所をクリックされたら入力途中から入力完了にしたい
GetKeyInputString( pass_buf , pass_s );
break;
}
GetKeyInputString( pass_buf , pass_s );
break;
}
DrawGraph( 0 , 0 , read , FALSE ) ;
DrawGraph( SCREEN_X / 2 - 90 , SCREEN_Y / 2 -45 , log , TRUE ) ;
if( strcmp(id_buf,"") !=0){
DrawString( SCREEN_X / 2 - 47 , SCREEN_Y / 2 -20 , id_buf, black );
}
// 入力途中の文字列を描画
DrawKeyInputString( SCREEN_X / 2 - 47 , SCREEN_Y / 2 + 4 , pass_s ) ;
ScreenFlip();
}
}
if( itihan == 3 ){ //ログインボタンが押される
GetKeyInputString( id_buf , id_s );
GetKeyInputString( pass_buf , pass_s );
if( ( strcmp( id_buf , "test" ) == 0 ) && ( strcmp( pass_buf , "test" ) == 0 ) ){
InitKeyInput();
return 1; //キャラクタ選択画面
}
else if( strcmp( id_buf , "" ) == 0 ){
DrawString( SCREEN_X / 2 - id_n / 2 , SCREEN_Y / 2 -64 , id_m, red );
ScreenFlip();
}
else if( strcmp( pass_buf , "" ) == 0 ){
DrawString( SCREEN_X / 2 - pa_n / 2 , SCREEN_Y / 2 -64 , pa_m, red );
ScreenFlip();
}
else {
DrawString( SCREEN_X / 2 - ip_n / 2 , SCREEN_Y / 2 -64 , ip_m, red );
ScreenFlip();
}
}
}
return 0;
}