Frage
Ich versuche, den Inhalt einer einfachen Schleife neu zu zeichnen. Bis jetzt druckt er auf die stdscr
100 Zeilen, und dann durch scrl
zu blättern mit n Linien I n Leerzeilen erhalten.
Was ich will, ist mit der Sequenz zu halten. Allerdings bin ich mir nicht sicher, wie die stdscr
mit den n zusätzliche Linien neu zu zeichnen. Alle Ideen werden es zu schätzen wissen!
#include <ncurses.h>
int main(void)
{
initscr();
int maxy,maxx,y;
getmaxyx(stdscr,maxy,maxx);
scrollok(stdscr,TRUE);
for(y=0;y<=100;y++)
mvprintw(y,0,"This is some text written to line %d.",y);
refresh();
getch();
scrl(5);
refresh();
getch();
endwin();
return(0);
}
Lösung
Vermutlich nach dem refresh()
nach scrl()
, fügen Sie die folgenden Zeilen:
for (y = 96; y <= 100; y++)
mvprintw(y, 0, "This is some text written as line %d.", y+5);
refresh();
Ich bin mit magischen Zahlen, natürlich. Sie sollten so etwas wie verwenden:
enum { MAX_SCR_LINE = 100 };
enum { MAX_SCROLL = 5 };
Dann wird die Schleife ist:
for (y = MAX_SCR_LINE - MAX_SCROLL + 1; y <= MAX_SCR_LINE; y++)
mvprintw(y, 0, "This is some text written as line %d.", y + MAX_SCROLL);
refresh();
Und wenn Sie den Prozess über wiederholen müssen, und darüber, dann wird die Berechnung wird:
enum { MAX_ITER = 10 };
for (int j = 0; j < MAX_ITER; j++)
{
scrl(MAX_SCROLL);
for (y = MAX_SCR_LINE - MAX_SCROLL + 1; y <= MAX_SCR_LINE; y++)
mvprintw(y, 0, "This is the text written as line %d.",
y + (j + 1) * MAX_SCROLL);
}
Etcetera ...
(-Code nicht getestet -. Vorsicht Bugs)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow