PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ncurses soll nicht den Bildschirm löschen



BLUESCREEN3D
21-06-2003, 19:12
Ich habe ein einfaches Programm mit ncurses geschrieben dass nichts anderes macht, als darauf zu warten, dass eine Taste gedrückt wird:


#include <ncurses.h>

int main()
{
initscr();
noecho();
cbreak();

getch();

endwin();
}

Wenn man das Programm mit "g++ bla.cpp -o bla -lncurses" compiliert und startet wird der gesamte Bildschirm gelöscht und nach dem beenden des Programmes wieder hergestellt.

Kann das Löschen des Bildschirmes (AFAIK wird automatisch von "initscr()" ein bildschirmgroßes Fenster erstellt) irgendwie verhindert werden, oder geht es auch ohne diesem Fenster?

linuxhanz
26-06-2003, 07:56
Hi, Schau doch mal in die ncurses Doku.

Ich tipp mal auf einen von den 3:

noecho();
cbreak();
getch();


einfach Google:ncurses Intro bzw. Referenz

Kann sein daß liegt schon bei Dir auf der Platte.

ContainerDriver
26-06-2003, 10:24
Hallo,
also in der NCURSES Howto steht dazu nichts (bei SuSE Linux 8.0).
Ich glaube auch nicht, dass man das irgendwie beeinflussen kann, da der initscr(); Aufruf essentiell ist. Du kannst aber den curses-Modus für kurze Zeit verlassen (des steht in der ncurses howto).

MFG

Florian

linuxhanz
26-06-2003, 11:47
NCURSES Howto steht dazu nichts (bei SuSE Linux 8.0)

Komisch ich mein genau das es DOCH geht. Hab evtl. in den HACKGUIDE
geschaut :confused:

BLUESCREEN3D
26-06-2003, 16:59
Original geschrieben von linuxhanz
Ich tipp mal auf einen von den 3:

noecho();
cbreak();
getch();

schön für dich - was soll mir das jetzt bitte sagen???

ContainerDriver
27-06-2003, 09:51
noecho();
cbreak();
getch();

Diese Funktionen haben damit eigentlich nichts damit zu tun.

noecho(); -- keine Ausgabe von Teastendrücken
cbreak(); -- sofortige übermittlung von Tastendrücker an das Prog
getch(); -- eine Eingabe tätigen.

Du meinst wohl, initscr(); solange aufzuhalten, bis jemand eine Taste drückt?
Ansonsten gibt das glaub ich keinen Sinn.

MFG

Florian

BLUESCREEN3D
27-06-2003, 12:43
Original geschrieben von florian hanisch
noecho(); -- keine Ausgabe von Teastendrücken
cbreak(); -- sofortige übermittlung von Tastendrücker an das Prog
getch(); -- eine Eingabe tätigen.
wozu die Funktionen da sind war mir klar...


Du meinst wohl, initscr(); solange aufzuhalten, bis jemand eine Taste drückt?
Ansonsten gibt das glaub ich keinen Sinn.
warum sollte ich? ich will nur nicht, dass der ganze Bildschirm gelöscht wird, sobald man ncurses benutzt

DanDanger
27-06-2003, 15:25
Hi,


ich will nur nicht, dass der ganze Bildschirm gelöscht wird, sobald man ncurses benutzt



das geht leider wirklich nicht.

Der initscr() - Aufruf löscht Automatisch den gesamten Screen.
Da initscr() keine Parameter erwartet, gibt es keine Möglichkeit, dieses Verhalten zu ändern.

BTW: Ich hab' auch noch kein Curses-Programm gesehen, dass den Bildschirm nicht löscht.

Gruss
DanDanger