ein Kapitel zurück                                           ein Kapitel weiter



int clearok(WINDOW *win,bool bf);  

Mit clearok() wird beim nächsten refresh()-Aufruf (bf=TRUE) der komplette Bildschirm neu gezeichnet. Also nicht nur die letzte Änderung seit dem letzten refresh().

int scrollok(WINDOW *win,bool bf);  

Falls bf=TRUE könne wir mit scrollok() noch eine weitere Zeile scrollen auch wenn der Cursor schon in der letzten Zeile steht und durch ein Newline oder ein weiteres Zeichen in die nächste Zeile springt. Wenn wir den Parameter bf auf FALSE setzten bleibt unser Cursor in der letzten Zeile stehen und der Bildschirminhalt bleibt unverändert. Beispiel:

/*Download:cur7.c*/
#include <curses.h> int main() { int i; initscr(); for(i=0;i<30; i++) { printw("Ohne Funktion scrollok()\n"); halfdelay(2); getch(); } clear(); refresh(); scrollok(stdscr,TRUE); for(i=0;i<30; i++) { printw("Mit Funktion scrollok()\n"); halfdelay(2); getch(); } getch(); endwin(); return 0; }

Im ersten printw - Durchlauf wir die Ausgabe keinen Schritt tiefer gehen als bis in Zeile 25. Die restlichen 5 werden einfach auf der gleichen Zeile rechts ausgegeben. Beim zweiten printw haben wir mit scrollok(stdsrc,TRUE) das scrollen in die nächste Zeile eingeschaltet und was bei der Ausgabe auch dazu führt das ab der Zeile 25 weiter in Zeile 26,27,28.... ausgegeben wird.

Was Curses als letzte Zeile betrachtet können sie mit......

int setscrreg(int oben, int unten);  

....beeinflussen. oben stellt die Zeile dar ab der gescrollt wird und unten stellt die letzte Zeile da. Die oberste Zeile hat in dem Programm dann den Wert 0. Wollen wir setscrreg() mal in unser Programm zuvor einbauen...

/*Download:cur8.c*/
#include <curses.h> int main() { int i; initscr(); setscrreg(5,10); for(i=0;i<30; i++) { printw("Ohne Funktion scrollok()\n"); halfdelay(2); getch(); } clear(); refresh(); scrollok(stdscr,TRUE); for(i=0;i<30; i++) { printw("Mit Funktion scrollok()\n"); halfdelay(2); getch(); } getch(); endwin(); return 0; }

Mit setscrreg(5,10) legen wir die Bildschirmgröße auf 5 Zeilen ein. Unsere Bildschirmgröße beginnt in Zeile 5 und endet in Zeile 10.

void getyx(WINDOW *win, int y, int x);>    

Damit können wir die Koordinaten der aktuellen Cursorpositionen abfragen. Die Koordinaten werden int y und x abgelegt. ACHTUNG: Es muss nicht der Adressoperator '&' an den beiden Koordinaten übergeben werden.

Hier nochmals das Programm mit getyx und noch ein bisschen verändert damit sie setscrreg und scrollok ebenfalls besser verstehen....

/*Download:cur9.c*/
#include <curses.h> int main() { int i,y,x; initscr(); setscrreg(0,10); for(i=0;i<30; i++) { getyx(stdscr,y,x); printw("%d. (%d/%d) Ohne Funktion scrollok()\n",i,y,x); halfdelay(2); getch(); } clear(); refresh(); scrollok(stdscr,TRUE); for(i=0;i<30; i++) { getyx(stdscr,y,x); printw("%d. (%d/%d) Mit Funktion scrollok()\n",i,y,x); halfdelay(2); getch(); } getch(); endwin(); return 0; }

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf