我使用ncurses创建了一个单窗口菜单方案并使其正常工作。 当我添加第二个窗口时,我再也无法触发我的wgetch(或者看起来似乎)。
对我来说有点困惑的是函数原型:
int wgetch(WINDOW *win);
其中wgetch以某种方式取决于窗口,但我没有得到关系 - 如何"窗口"物?如果是,我有多个窗口,我使用哪一个?此外,https://linux.die.net/man/3/wgetch表示"所有窗口只有一个输入队列。"它告诉我"窗口"是一个“不在乎”的人。
有人可以解释一下吗?
感谢。
答案 0 :(得分:2)
窗口很重要因为 wgetch
刷新窗口,然后再读取字符。这是在wgetch
手册页中:
如果窗口不是打击垫,并且它已被移动或修改过 最后一次致电
wrefresh
,wrefresh
将在另一个角色之前调用 正在阅读。
自上次调用 stdscr
以来,每个窗口(包括 wrefresh
)可能已被更改。如果您在一个窗口中进行更改而不刷新它,然后在另一个窗口中调用 wgetch
,则不会自动显示对第一个窗口的更改。您可以使用wnoutrefresh
组合刷新,例如,将其用于第一个窗口,然后使用 wrefresh
自动完成第二个窗口的刷新。