2012-01-16 3 views
1

Привет и хороший день ..Прокрутка назад в истории с pdCurses

Так я написал это простое приложение с проклятиями, который прокручивает вниз или вверх, когда вы нажимаете кнопку page-down или page-up.

#include <curses.h> 
#include <stdio.h> 
#include <Windows.h> 

int main(void) 
{ 
    int ch; 

    initscr(); 
    cbreak(); 
    keypad(stdscr,TRUE); 
    idlok(stdscr,TRUE); 
    scrollok(stdscr,TRUE); 

    printw("Welcome!"); 
    refresh(); 


    ch = getch(); 
    while(ch != 'q'){ 
     if(ch == KEY_PPAGE){ 
      scrl(-1); 
      refresh(); 
     } 
     else 
     { 
      scrl(1); 
      refresh(); 
     } 
     ch = getch(); 
    } 

    endwin(); 
    return 0; 

} 

Проблема заключается в том, что если мир «Добро пожаловать» выходит из окна, то вы не можете вернуть его с помощью кнопки противоположной. Я думал, что что-то вроде этого будет решено путем увеличения буфера окна. Но не знаю, как это будет сделано, и если это будет хорошо.

Есть ли какая-нибудь идея/подсказка, чтобы помочь мне решить эту проблему?

ответ

1

Я использую проклятия в python, и способ, которым я решаю эту проблему, состоит в том, чтобы связанная с списком структура данных была прикреплена к окну, в котором хранятся все строки, которые нужно запомнить, а также индекс, который обозначает первую видимую строку. Оттуда вы можете выяснить, какие линии должны быть видны, и пересчитать по мере необходимости.

Одна такая реализация в python с использованием Unicurses может быть найдена here. Это не в C, но я надеюсь, что это поможет.

Смежные вопросы