ein Kapitel zurück                                           ein Kapitel weiter

ncurses steht für 'new curses' und ist ein freier Clon der Library SVR4 UNIX von Bell Lab. Für Umsteiger von M$-DOS Systemen ist curses eine der Alternativen zu conio. Umsteiger von den eben genannten System werden aber nach etwas Eingewöhnungszeit mit einer gewaltigen und funktionsreichen Lib belohnt.

Als Alternative zu curses wäre noch termcap und terminfo zu nennen. Die die Tendenz heute immer mehr auf Vollgrafischen Anwendungen geht, will ich hier nur curses besprechen, damit sie wenigstens eine Möglichkeit kennen eine 'Halbgrafische' Terminalanwendung zu erstellen.

Da sich die curses.h - Lib (auf manchen System auch ncurses.h), nicht auf jedem System Standardmäßig befindet (unglaublich nicht wahr) müssen sie diese Library beim Compilieren hinzulinken. Beispielsweise mit.....

gcc -o programmname programmname.c -lncurses /*oder auch -lcurses*/  

Ein wenig zum Begriff Window
Eine kurze Einführung für das Fenster unter curses da es häufig Verständigungsprobleme dazu gibt.

  • Screen - Der Screen ist der physische Terminalbildschirm der im Zeichen oder Konsolenmodus läuft.
  • Window - Als Window bezeichent man ein Rechteckigen Bereich auf dem Bildschirm der sich innerhalb des Screens befindet.
  • stdscr - Dies ist der erste Bildschirm bei curses den sie sehen auf dem Window.
  • curscr - Dies ist der aktuelle Bildschirm den sie Aufrufen können wenn stdscr bereits initialisiert wurde. Schließlich können sie bei curses mit mehr als einem Fenster arbeiten. Ein gutes Beispiel stellt Yast1 der SUSE-Distrubition da.

Einen ersten Überblick zu curses können sie sich unter...

man ncurses oder man curses  

...verschaffen. Diese Manual-Seite dient auch für das weitere Recherchen zu dieser Lib, sollten sie auf dieser Webseite mal nichts darüber finden. Nun wollen wir Beginnen und uns das Grundgerüst zu curses ansehen.

Mit der Funktion....

WINDOW *initscr(void);  

...initialisieren wir ncurses, und bekommen einen Zeiger auf stdscr zurück bei Erfolg, oder im Fehlerfall NULL.

Jetzt könnten wir mit ncurses-Funktionen arbeiten. Aber dazu im nächsten Kapitel. Wenn wir unser Programm wieder beenden wollen machen wir dies mit der Funktion....

int endwind(void);  

...und das akutelle Terminal wird wieder freigegeben. Diese Funktion liefert die Konstante OK zurück wenn alles klar ging, oder bei Fehler die Konstante ERR.

Somit sieht unser Grundgerüst folgendermaßen im Quellcode aus......

/*Download:cur1.c*/
/*Übersetzen bitte mit : gcc -o cur1 cur1.c -lncurses*/ #include <curses.h> int main() { /*curses initialisieren*/ initscr(); /*..........*/ /*curses-Funktionen usw.*/ /*.........*/ /*curses beenden*/ endwin(); }

Logischerweise passiert nach übersetzen und Starten des Programms nichts.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf