Tryby pracy funkcji pobierających tekst.
Zanim podam kod chciałbym dodać, że funkcje getch(); itp. mogą pracować w
dwóch trybach, echo(); i noecho(); . W trybie
echo() po wywołaniu funkcji getch() jest wyświetlana litera, która została wciśnięta. W trybie
noecho(), po wywołaniu funkcji getch(), jest tylko pobrany znak z klawiatury, i nic więcej. Żadna litera nie zostaje wyświetlona. ;)
Przykład
Ok, teraz przejdzmy do kodu:
#include <ncurses.h>
int main()
{
initscr();
keypad( stdscr, TRUE );
printw( "Znak w grubej czcionce:\n\n" );
noecho();
int litera = getch();
printw( "Wcisniety znak to:" );
attron( A_BOLD );
printw( "%d", litera );
getch();
endwin();
return 0;
}
Wyjaśnienie
1. Dzięki funkcji
keypad(stdscr, true) program nie wyłącza się i odczytuje takie znaki jak strzałki, F3 itp. Stdscr oznacza nasze okienko czyli konsolkę. Parametr TRUE oznacza włączenie funkcji, zamieniając go na false, z powrotem nasz program będzie się wyłączał po wciśnięciu nieprawidłowego przycisku np. ctrl + z. ;)
2. A więc tak jak napisałem na początku, dzięki temu po "int litera = getch();" nie jest wyświetlany znak. Jeżeli nadal nie rozumiesz o co chodzi w echo() i noecho() skompiluj ten kod zmieniając te funkcje. I co zaobserwowałeś?
3. Funkcja
attron(A_BOLD) zmienia wyświetlaną czcionkę w konsoli na grubszą. A dokładniej zmienia tryb wyświetlanie, ale o tym później. Bardzo przydatne, gdy chcemy na coś szczególnie zwrócić uwagę użytkownika.
4. Pewnie się zastanawiasz po co Ci jakiś program co zamiast wyświetlania wciśniętego klawisza wyświetla jakieś liczby. Te liczby to kod danego przycisku. Może później w przyszłości Ci się przyda wiedzieć jaki kod ma jaki klawisz i będziesz od razu wiedział jak taki program stworzyć, np. będziesz pisał program szyfrujący tekst. ;p
Zmiana wyświetlania liczby na literę
A więc jeżeli koniecznie chcesz, by wyświetlała się litera to zamiast:
napisz:
Widzisz jakie proste, a jaka różnica. ;P
Zakończenie
To co na tej lekcji poznałeś nie powinno być dla Ciebie skomplikowane, jeżeli tak jest spróbuj jeszcze raz przeanalizować kod. Pewnie zauważyłeś, że włączyliśmy tryb pogrubiania tekstu, ale jak go wyłączyć? ;-) Tego wraz z innymi funkcjami operującymi na tekście dowiemy się na następnej lekcji.