无法将ncurses表单与窗口关联
Unable to associate an ncurses form with a window
我正在尝试将ncurses
表单与窗口相关联。以下是我试用的完整代码:
#include <form.h>
#include <vector>
#include <string>
int main() {
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
FORM *myform;
std::vector<FIELD *> fields;
fields.push_back(new_field(1, 10, 0, 0, 0, 0));
set_field_back(fields[0], A_UNDERLINE);
fields.push_back(nullptr);
myform = new_form(fields.data());
WINDOW *mypad = newpad(5, 20);
set_form_win(myform, mypad); // no effect?
post_form(myform);
prefresh(mypad, 0, 0, 10, 10, 20, 20); // no effect...
getch();
unpost_form(myform);
free_form(myform);
free_field(fields[0]);
endwin();
return 0;
}
正如评论所示,调用set_form_win
似乎没有任何效果。无论我提供给prefresh
的参数是什么,表单都显示在左上角。类似的代码可以很好地处理菜单,但不能处理表单。我缺少什么?
作为额外的细节,即使不调用prefresh
或refresh
家族的任何其他函数,表单也会神奇地显示出来。
Windows和pad相似,但不相同。set_form_win
函数需要一个窗口。
newpad
手册页面注释:
叫花环是不合法的用垫子作为论据;例程prefresh或应该改为调用pnoutrefresh。
表单库确实使用pad—内部,对于字段—但窗户就是这样(没有垫子)。相关的函数是wcursyncup和wsyncup(实际的wrefresh
调用依赖于应用程序的wgetch
)。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- 关联容器的下界复杂性:成员函数与非成员函数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- std::future_error:无关联状态
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 无法将ncurses表单与窗口关联
- 将查看器与PCL下的现有窗口关联