Прокрутка истории назад с помощью pdCurses - PullRequest
1 голос
/ 16 января 2012

Привет и хорошего дня ..

Итак, я написал это простое приложение с проклятиями, которые прокручиваются вниз или вверх, когда вы нажимаете кнопку 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 Ответ

1 голос
/ 16 января 2012

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

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

...