带有 ncurses 的子窗口
Posted
技术标签:
【中文标题】带有 ncurses 的子窗口【英文标题】:Subwindows with ncurses 【发布时间】:2014-12-23 02:54:57 【问题描述】:我正在尝试使用 ncurses 库在主窗口中放置一个较小的窗口。我希望它看起来有点像最终幻想战斗屏幕,您的主地图和角色将在主窗口中,而子窗口将在底部显示您的战斗选项。
我正在尝试使用 "WINDOW * subWin = newwin(nlines, ncols, y0, x0);"但是当我运行它时,我看不到任何辅助窗口或子窗口。有谁知道我使用的内容是否不正确,或者为什么我实际上看不到子窗口?
谢谢!
【问题讨论】:
也许你需要在里面放点东西。 也许你应该展示你的代码的最小版本。你刷新窗口了吗? 查看作为 ncurses 一部分的面板库。它比核心 ncurses 库更容易处理多个窗口,包括重叠和堆叠窗口。 那是因为 ncurses 子窗口不是子窗口,它们是所述窗口的“区域”并引用相同的内存 【参考方案1】:这是一个显示主窗口和子窗口的示例:
#include <curses.h>
int main(int argc, char** argv)
initscr();
printw("Main window");
WINDOW* subwindow = newwin(10,20,5,15);
refresh();
box(subwindow,0,0);
mvwprintw(subwindow, 1, 1, "subwindow");
refresh();
wrefresh(subwindow);
getch();
delwin(subwindow);
endwin();
return 0;
【讨论】:
没问题 - 我有一顶帽子 :) 这不是子窗口。 stdscr 中只有一个窗口。 @OS2 是的..并且 OP 提到了newwin
而不是 subwin
。在某些实现中,手册页显示“子窗口函数(subwin、derwin、mvderwin、wsyncup、wsyncdown、wcursyncup、syncok)不稳定、未完全实现且未经过良好测试。”在BUGS下。然而,它在这里的答案中创建了一个区域,这就是我的想法,除非我弄错了(并且因为它被接受为答案......)。
OP 正在谈论制作子窗口(窗口中的窗口)而不是子窗口功能以上是关于带有 ncurses 的子窗口的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL SELECT 中的子查询和 ROW_NUMBER 窗口函数生成“平均”列