使用ncurses - 试图理解wgetch()

时间:2018-03-27 16:44:56

标签: ncurses

我使用ncurses创建了一个单窗口菜单方案并使其正常工作。 当我添加第二个窗口时,我再也无法触发我的wgetch(或者看起来似乎)。

对我来说有点困惑的是函数原型:

int wgetch(WINDOW *win);

其中wgetch以某种方式取决于窗口,但我没有得到关系 - 如何"窗口"物?如果是,我有多个窗口,我使用哪一个?此外,https://linux.die.net/man/3/wgetch表示"所有窗口只有一个输入队列。"它告诉我"窗口"是一个“不在乎”的人。

有人可以解释一下吗?

感谢。

1 个答案:

答案 0 :(得分:2)

窗口很重要因为 wgetch 刷新窗口,然后再读取字符。这是在wgetch手册页中:

  

如果窗口不是打击垫,并且它已被移动或修改过   最后一次致电 wrefresh wrefresh 将在另一个角色之前调用   正在阅读。

自上次调用 stdscr 以来,每个窗口(包括 wrefresh )可能已被更改。如果您在一个窗口中进行更改而不刷新它,然后在另一个窗口中调用 wgetch ,则不会自动显示对第一个窗口的更改。您可以使用wnoutrefresh组合刷新,例如,将其用于第一个窗口,然后使用 wrefresh 自动完成第二个窗口的刷新。