使用pdCurses滚动回历史记录

时间:2012-01-16 10:06:56

标签: c scroll curses

您好,祝您有个美好的一天..

因此,当您按下page-downpage-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;

}

问题是,如果世界&#34;欢迎&#34;走出窗外,然后你不能用相反的按钮把它带回来。我认为这样的事情将通过增加窗口缓冲区来解决。但是,不知道如何做这样的事情,以及它是否有好处。

是否有任何想法/提示可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

我在python中使用curses,我解决这个问题的方法是在窗口附加一个类似列表的数据结构,它包含要记住的所有行,以及表示第一个可见行的索引。从那里你可以找出哪些线应该是可见的,并在必要时重新计算。

使用Unicurses的python中的一个这样的实现可以找到here。它不在C中,但我希望它有所帮助。