在窗口内打印,而不是在边框上打印

Ale*_*dru 10 c ncurses

我正在尝试在curses窗口中写一些东西,但它似乎也写在边框上.我该如何修复下面的代码?

win_self = newwin(LINES / 2, COLS, 0, 0);
box(win_self, 0, 0);
wrefresh(win_self);
wprintw(win_self, "foobar");
Run Code Online (Sandbox Code Playgroud)

Phi*_*lip 12

在诅咒,所产生的边界box()内部边界.据我所知,没有办法简单地说"不要覆盖我的边界".

不过,我现在可以想到三种解决方案:

  • 不要覆盖边框字符(使用move())
  • 画箱绘制窗口的内容,然后refresh()在屏幕上(你可能仍然覆盖的东西,但至少它不是边境字符)
  • 创建一个带边框的"边框窗口",里面有一个"内容窗口",当然从(border_window_start_y + 1,border_window_start_x + 1)开始,比"边框窗口"小两行/列


只是为了使它更清楚:该box()函数不会向窗口添加"此窗口具有可见边框"属性,它只是在窗口周围打印边框字符.

你是:

  • 可以自由覆盖那些边框字符
  • 如果你不想覆盖它们,我们应该保持谨慎