我一直在玩 ncurses,我在网上发现很少有用的信息来处理垫子。我知道垫子是一种较大的屏幕外窗口,其中的部分可以打印在屏幕上较小的窗口上。
我编写了一个程序来在屏幕上打印 pad 的上下文。问题是该程序似乎只打印“逐行”并且不环绕文本。
程序的输出是这样的:
abcdefghij
abcdefghij
abcdefghij
但它应该是这样的:
abcdefghij
klmnopqrst
uvwxyzabc
在后一种情况下,同一行“环绕”而不是打印多行。
任何 ncurses 大师都可以告诉我如何实现这种包装功能吗?(即:魔法?)
询问您是否需要更多详细信息,程序的源代码:
#include <unistd.h>
#include <curses.h>
int main()
{
WINDOW *pad_ptr;
int x, y;
int pad_lines;
int pad_cols;
char disp_char;
initscr();
pad_lines = LINES + 50;
pad_cols = COLS + 50;
pad_ptr = newpad(pad_lines, pad_cols);
disp_char = 'a';
for(x = 0; x < pad_lines; x++)
{
for(y = 0; y < pad_cols; y++)
{
mvwaddch(pad_ptr, x, y, disp_char);
if(disp_char == 'z')
disp_char = 'a';
else
disp_char++;
}
}
/* We just filled the pad with letters from the alphabet. */
/* Now we will fill part of the main window with a 10x10 section
* of the pad.
* Notice that the text does not wrap around. (Where is 'k'?)
*/
prefresh(pad_ptr, 0, 0, 3, 3, 9+3, 9+3);
sleep(3000);
// prefresh(pad_ptr, LINES + 5, COLS + 7, 5, 5, 21, 19);
// sleep(4);
delwin(pad_ptr);
endwin();
exit(0);
}