Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro5] Wpisywanie tekstu z klawiatury

Ostatnio zmodyfikowano 2014-03-22 17:04
Autor Wiadomość
marianekA
Temat założony przez niniejszego użytkownika
[Allegro5] Wpisywanie tekstu z klawiatury
» 2014-03-22 17:04:52
Witam, robię okienko do wpisywania tekstu i nie wiem jak zrobić
by trzymając wciśnięty klawisz uzyskać pauzę między pierwszym znakiem a powtarzanymi, tak jak edytorze tego postu. Chciałbym pozbyć się 'al_rest()'.
C/C++
string im = "", zz = "";
int kod = 0, st = 0;
char c = 0;
while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) )
{
    al_get_keyboard_state( & klawiatura );
    al_get_next_event( event_queue, & ev );
    kod = ev.keyboard.unichar;
    c = kod;
    if( kod > 31 && kod < 123 ) im = im + c; //kolejny znak
   
    //--- polskie lit ---
    if( kod == 261 ) zz = "ą";
   
    if( kod == 281 ) zz = "ę";
   
    if( kod == 263 ) zz = "ć";
   
    if( kod == 321 ) zz = "Ł";
   
    if( kod == 322 ) zz = "ł";
   
    if( kod == 324 ) zz = "ń";
   
    if( kod == 243 ) zz = "ó";
   
    if( kod == 346 ) zz = "Ś";
   
    if( kod == 347 ) zz = "ś";
   
    if( kod == 379 ) zz = "Ż";
   
    if( kod == 380 ) zz = "ż";
   
    if( kod == 378 ) zz = "ź";
   
    if( kod > 200 ) im = im + zz;
    //--------------------
    if( kod == 8 && im.size() > 0 ) im.resize( im.size() - 1 ); //minus jeden znak
   
    al_draw_textf( f18, k2, x + 5, y, 0, "%s", im.c_str() ); //wpisanie textu
   
    ++b;
    if( b > 10 ) b = 0;
   
    if( b < 5 ) al_draw_textf( f18, k2, x + 5 + st, y - 1, 0, "_" ); //kursor
   
    st = al_get_text_width( f18, im.c_str() );
    al_flip_display();
    al_rest( 0.1 );
   
    al_draw_filled_rectangle( x + 1, y + 1, x + h, y + 20, k5 );
   
    if( kod == 13 && im != "" ) break;
   
}
.

Nie udało mi się rozwiązać tego problemu...jestem jeszcze za cienki, nikt pomysłu też nie miał więc temat zamykam.
P-107014
« 1 »
  Strona 1 z 1