每当我需要在控制台中输出大量数据时,我只需使用 setconsolescreenbuffersize() ,因此如果数据量超过控制台的大小,我总是可以向后滚动。
但是,当使用 pdcurses 时,我似乎无法做到,所以窗口会记住它的内容。如果我将它设置为可滚动并尝试向后滚动,我会得到空行。我查看了 WINDOW 数据结构,但没有发现任何类似于数据缓冲区的东西。我必须自己为诅咒窗口编写缓冲区吗?
这是一个示例程序。它创建一个垫,打印从 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;
}