我正在使用ncurses在C++中开发应用程序,但是newwin()和mvwin()函数均未按预期工作。每当我给出这些函数自变量值中的任何一个,以试图创建一个大小与初始终端窗口不同的新窗口时,似乎什么都没有发生。例如,以下代码应在位置(10,10)处创建一个新窗口,该窗口的高度为50,宽度为10。这些似乎都没有发生:

#include <ncurses.h>
#include <iostream>

using namespace std;

int main(){
  initscr();

  WINDOW * win = newwin(50,10,10,10);
  wrefresh(win);

  getch();
  endwin();
  return 0;
}

从我阅读的文档中可以看出,如果传递给它的任何参数均为无效值,则将创建一个具有默认大小和位置的窗口,但是据我所知所有这些都是有效值。 newwin()是否不能像我认为的那样工作?先感谢您

最佳答案

该问题询问有关 mvwin 的问题,但这不会创建窗口,也不会在有问题的调用问题中提供示例。

对于 newwin ,将专门处理零个参数,而不是“无效值”。该问题显示一个看似有效的 call (并且在快速检查中,它按预期运行)。

但是,OP可能会混淆没有输出。这是因为程序创建了一个窗口,该窗口为空,然后从标准屏幕读取。

这个更改后的程序通过在新窗口上绘制一个框,然后从该窗口读取(通过在新窗口上绘画来防止与wrefresh关联的getch)来产生输出:

#include <ncurses.h>
#include <iostream>

using namespace std;

int main(){
  initscr();

  WINDOW * win = newwin(50,10,10,10);
  box(win,0,0);
  wrefresh(win);

  wgetch(win);
  endwin();
  return 0;
}

关于c++ - ncurses newwin()和mvwin()的行为不符合预期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42842545/

10-10 15:00