Data dokumentu : styczeń 2004r.
Opis podstawowych poleceń biblioteki curses.
Autor: Krystian Bogdanik
Celem tego opisu jest lepsze zrozumienie i wykorzystanie właściwości biblioteki curses. Opis ten zawiera przykłady wykorzystania procedur oraz funkcji tworzących tryb okienkowy pod systemem Unix. Wszystkie przykłady programów zostały napisane w języku Pascal.
Gdzie ekran jest zmienna typu window, czyli deklaracja okna głównego,
natomiast ekran:=INITSCR powoduje włączenie trybu okienkowego.
Następnym poleceniem, które opisze jest Wrefresh(nazwa_okna).
Procedura ta powoduje odświeżenie okna, którego nazwę umieścimy w nawiasie.
Procedura TouchWin(nazwa_okna) również powoduje odświeżenie okna lecz najpierw zaznacza
wszystkie elementy, które znajdują się w danym oknie.
Obydwie procedury odświeżania należy stosować, gdy chcemy wyświetlić coś w trybie
okienkowym.
Za pomocą funkcji NewWin(ilość_wierszy,ilość_kolumn,y,x) możemy utworzyć nowe okno.
Pierwsze dwa argumenty tej funkcji określają rozmiar nowego okna (ilość wierszy i kolumn)
natomiast dwa następne miejsce położenia okna na terminalu. Trzeba jednak pamiętać że najpierw
się podaje współrzędne Y, a potem X, liczone od lewego górnego rogu, gdzie Y,X
wynoszą 0,0.
Sposób wywołania:
Wyniku wykonania tego programu zastanie utworzone nowe okno w lewym górnym rogu terminala
o rozmiarach 5 na 20.Procedura Box(nazwa_okna,0,0) służy do wykonywania ramki dla
stworzonego okna. Trzeba jednak pamiętać że procedura ta zmniejsza ilość wierszy i kolumn,
np. stworzone okno w programie 'okienko' "będzie miało" tylko 3 wiersze oraz 18 kolumn,
ponieważ dwie kolumny i dwa wiersze będą przeznaczone na narysowanie obramowania.
Procedura DelWin(nazwa_okna) służy do usuwania stworzonego okna.
Procedura WMove(nazwa_okna,y,x) jest procedurą przeznaczoną do umieszczania kursora w żądanym
miejscu danego okna. Bardzo przydatna, kiedy chcemy wyświetlić napisów lub znak w oknie
( ustawienia kursora tylko).Sposób wykorzystania:
Funkcja Wgetch(nazwa_okna) służy do sczytywania pojedynczego znaku z wybranego okna. Funkcja ta zwraca liczbę całkowitą(w kodzie ASCI).Jej wywołanie wygląda następująco: klawisz:=wgetch(nazwa_okna), gdzie zmienna klawisz jest typu Integer.
Program ponierz_znak;Po skompilowaniu i uruchomieniu programu 'pobierz_znak' na ekranie pojawi się kursor w współrzędnych y=10 i x=30, który będzie czekał na wciśnięcie klawisza (dowolnego). Po naciśnięciu przycisku na ekranie pojawi się litera(lub znaczek) wciśnięta w współrzędnych y=5 i x=30. Pętla ta zakończy swe działanie po wciśnięciu 'q'. Wykonanie takiej pętli jest bardzo przydatne, kiedy chcemy zobaczyć rezultat swego prostego programu, ponieważ wyświetlenie samego okna czasami odbywa się bardzo szybko i nie zauważamy rezultatu wykonania jego przed zakończeniem działania programu.
Wyniku wykonania programu 'Pobierz_wyraz' na ekranie pojawi się okno z ramką. W środku tego okna będzie się znajdowało zdanie oraz kursor, który będzie czekał na wpisanie wyrazu. Po wciśnięciu ENTERa zostanie skasowane okno oraz zakończenie pracy graficznej tego programu i zostanie wyświetlone ten wyraz w trybie tekstowym
Procedura decydująca o działaniu klawiszy funkcyjnych ( np.F1,ESC,strzałki,itp.) podczas wykonywania programu to: Keypad(nazwa_okna,switch). Pierwszym argumentem jest nazwa okna, natomiast switch przyjmuje wartości on lub off. Nazwę poszczególnych przycisków używanych w bibliotece znajdują się tutaj curses.
Wyniku wykonania tego programu zostanie wyświetlony napis informujący jakie klawisze coś wykonują. Jeżeli naciśniemy 'ESC' program zakończy pracę, natomiast po naciśnięciu przycisku "F1" wyświetli się napis - "Ten przycisk to F1 !", kiedy naciśniemy strzałkę do góry zostanie wyświetlony napis - "Działa tylko strzałka do góry". Inne przyciski nic nie będą wykonywać, ponieważ są pomijane.
UWAGA !!! Zdarzają się przypadki, kiedy terminal nie reaguje na zadeklarowane przyciski!
W takim przypadku możemy tylko zmienić nazwę przycisku zadeklarowanego na kod ASCI, który mu odpowiada.
Wszelkie uwagi związane z niejasnością
tekstu proszę kierować pod adres e-mail krystianx@op.pl
lub kbogdani@diablo.ict.pwr.wroc.pl .
Autor : Krystian Bogdanik