我遇到与Ncurses No Output类似的问题。
我退出前只是打电话给getch
。
当我没有添加第二个getch
电话时,我看不到任何输出
在输出任何东西之前。以下是一个集合
所有相关代码部分在一个例程中复制在一起
表现出与我完整计划相同的问题。
所以有些电话看起来多余,但我找到了必要的电话
在当地情况下。
#include <glib.h>
#include <stdlib.h>
#define bool ncbool
#include <ncurses.h>
#undef bool
gint32 main ( gint32 argc, gchar * argv [] )
{
initscr ();
keypad ( stdscr, FALSE );
nonl ();
cbreak ();
nodelay ( stdscr, FALSE );
noecho ();
/*
gint zch_extra;
zch_extra = getch ();
*/
WINDOW* w;
w = newwin ( 5, 10, 3, 3 );
box ( w, 0, 0 );
wnoutrefresh ( w );
mvwaddstr ( w, 1, 1, "huhu" );
wnoutrefresh ( w );
doupdate ();
mvwaddstr ( w, 2, 1, "<cont>" );
wrefresh ( w );
gint zch;
zch = getch ();
clear ();
refresh ();
nl ();
nocbreak ();
echo ();
endwin ();
return 1;
}
当我在代码中添加额外的getch
注释时,我只看到输出。
编译命令:
gcc -I /usr/include/ncurses -I /home/mkiever/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -ansi -ggdb -c -o main.o main.c
gcc -o test main.o -lncurses `pkg-config --libs glib-2.0`
平台(uname -a
):Linux Pirx 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) i686 GNU/Linux
我做错了什么?我想,这是我的不同refresh
来电的组合,但我不知道究竟问题在哪里。
谢谢你看看。
答案 0 :(得分:1)
curses启动时想要清除屏幕 stdscr (如initscr
手册页中所述):
initscr
也会导致 首先致电refresh(3x)以清除屏幕。
执行此操作需要在调用initscr
后的某个时间进行刷新。 getch刷新了 stdscr 。在非工作的情况下,程序创建,修改和刷新另一个窗口,但是当你调用getch时,curses刷新 stdscr (再次,在manual中),覆盖该窗口。
它在内部执行这些步骤,在程序通过getch
请求输入之前无需显示结果。