【发布时间】:2019-01-09 16:06:35
【问题描述】:
当窗口宽度大于 8 时,边框绘制功能似乎无法正确绘制顶部和底部边框。作为免责声明,我正在使用 KiTTY SSH 到 Arch Linux 服务器。
我是 ncurses 的新手,所以很有可能我做错了什么,但从我所读到的内容来看,这应该是正确的......
#include <ncurses.h>
int main() {
initscr(); cbreak();
WINDOW *win = newwin(1,1, 1,1);
for(int i=1; i < 16; ++i) {
wresize(win, i, i);
wclear(win);
box(win, 0,0); // I've also tested wborder()
wrefresh(win);
mvprintw(0,0, "size: %i", i);
getch(); //pause
}
endwin();
return 0;
}
运行这段代码,我看到的是这样的:
size: 8
+------+
¦ ¦ Displays like this (normally)
¦ ¦ for both top and bottom borders
¦ ¦
¦ ¦
¦ ¦
¦ ¦
+------+
size: 9
+-+
¦ ¦ Each size up it will continue
¦ ¦ to look like this, with the
¦ ¦ top and bottom borders looking
¦ ¦ like `+-+`
¦ ¦
¦ ¦
¦ ¦
+-+
【问题讨论】:
-
对我来说没有错误。我看到一个完整的矩形。 (在 Ubuntu 18.04 上,在 bash 终端中运行,并使用 g++ 7.3.0 编译。)
-
旁注:
cbreak;不应该是cbreak();吗? -
好的,感谢测试。我有一种感觉,这是我的结局。我会做一些调查。
-
你说得对,伊恩,我会在我的最后和问题中解决它。
-
也适合我。每次我按下一个键,盒子就会向上转动一档。这可能与终端有关。您可以尝试使用不同的终端或在不同的机器上来缩小可能的原因吗?