屏幕上没有字符发送到 Ncurses pad
No characters on screen sent to an Ncurses pad
这应该有效
谁能告诉我为什么我在屏幕上看不到输入的输出?
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int nRows;
int nCols;
WINDOW *myPad;
int main(void)
{
initscr();
getmaxyx(stdscr, nRows, nCols);
myPad = newpad(nRows, nCols);
while (1)
{
waddch(myPad, wgetch(myPad));
prefresh(myPad, 0, 0, 0, 0, nRows, nCols);
}
return EXIT_SUCCESS;
}
我不知道……其他类似的例子也行得通。
这可能是一个 Ubuntu 问题吗?
18.04.3 今日最新补丁
调用initscr
后,stdscr
中的当前位置为0,0
。然后您的程序会询问位置并将其用作焊盘的大小:
具有 zero 行和 zero 列的 pad 不会在屏幕上显示太多.
修改后的问题,还有两个问题:
- 输入已缓冲(使用
cbreak
更改)
- 循环前少了一个
refresh
(保证显示stdscr
)
这是一个差异,显示了可以采取哪些措施来解决这些问题:
> diff -u foo.c.orig foo.c
--- foo.c.orig 2019-08-21 19:24:24.000000000 -0400
+++ foo.c 2019-08-21 19:30:46.202769968 -0400
@@ -13,12 +13,14 @@
{
initscr();
+ cbreak();
+ noecho();
getmaxyx(stdscr, nRows, nCols);
myPad = newpad(nRows, nCols);
-
+ refresh();
while (1)
{
waddch(myPad, wgetch(myPad));
这应该有效 谁能告诉我为什么我在屏幕上看不到输入的输出?
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int nRows;
int nCols;
WINDOW *myPad;
int main(void)
{
initscr();
getmaxyx(stdscr, nRows, nCols);
myPad = newpad(nRows, nCols);
while (1)
{
waddch(myPad, wgetch(myPad));
prefresh(myPad, 0, 0, 0, 0, nRows, nCols);
}
return EXIT_SUCCESS;
}
我不知道……其他类似的例子也行得通。 这可能是一个 Ubuntu 问题吗?
18.04.3 今日最新补丁
调用initscr
后,stdscr
中的当前位置为0,0
。然后您的程序会询问位置并将其用作焊盘的大小:
具有 zero 行和 zero 列的 pad 不会在屏幕上显示太多.
修改后的问题,还有两个问题:
- 输入已缓冲(使用
cbreak
更改) - 循环前少了一个
refresh
(保证显示stdscr
)
这是一个差异,显示了可以采取哪些措施来解决这些问题:
> diff -u foo.c.orig foo.c
--- foo.c.orig 2019-08-21 19:24:24.000000000 -0400
+++ foo.c 2019-08-21 19:30:46.202769968 -0400
@@ -13,12 +13,14 @@
{
initscr();
+ cbreak();
+ noecho();
getmaxyx(stdscr, nRows, nCols);
myPad = newpad(nRows, nCols);
-
+ refresh();
while (1)
{
waddch(myPad, wgetch(myPad));