PDCurses滚动问题

时间:2015-02-20 00:04:30

标签: scroll buffer ncurses curses pdcurses

每当我需要在控制台中输出大数据时,我只需使用setconsolescreenbuffersize(),这样如果数据量超过控制台大小,我就可以随时向后滚动。

然而,当使用pdcurses时,我似乎无法做到这一点,所以窗口会记住它的内容。如果我将它设置为可滚动并尝试向后滚动我会得到空行。我查看了WINDOW数据结构,但没有发现任何类似于数据缓冲区的内容。我是否必须自己为curses窗口编写缓冲区?

这是一个示例程序。它创建一个打击垫,打印从1到100的数字,之后应该回滚到第一个。然而,没有数字,没有任何东西。

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

int main()
{
    WINDOW  *w;
    int     i;

    if (initscr() != NULL)
    {
            if ((w = newpad(25,80)) != NULL) 
            {
                    scrollok(w,TRUE);
                    for (i = 1 ; i <= 100 ; i++) 
                    {
                            Sleep (50);
                            wprintw(w,"%d\n",i);
                            prefresh(w,0,0,0,0,24,79);
                    }
                    while (true)
                    {
                        Sleep (50);
                        wscrl (w, -1);
                        prefresh(w,0,0,0,0,24,79);
                    }
            }
            endwin();
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

PDcurses(与任何其他curses应用程序一样)只记住屏幕上的内容。如果您需要屏幕外的数据,是的 - 您必须自己管理。