我正在使用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/