Reputation: 25830
I'm trying to write something inside a curses window, but it seems to write on borders too. How can I fix the code below?
win_self = newwin(LINES / 2, COLS, 0, 0);
box(win_self, 0, 0);
wrefresh(win_self);
wprintw(win_self, "foobar");
Upvotes: 13
Views: 6533
Reputation: 692
I'd say the easiest way is to create a (content) window inside of the (borders) window and print in that inner window.
WINDOW *win_self = newwin(LINES / 2, COLS, 0, 0);
box(win_self, 0, 0);
WINDOW *derwin_self = derwin(win_self, LINES / 2 - 2, COLS - 2, 1, 1);
wprintw(derwin_self, "foobar");
Upvotes: 5
Reputation: 5917
In curses, the borders generated by box()
are inside borders. As far as I can tell, there's no way to simply say "don't overwrite my border".
Nevertheless, there are three solutions that I can think of right now:
move()
)refresh()
the screen (you're probably still overwriting something, but at least it's not the border characters)
Just to make it more clear: the box()
function doesn't add the property "this window has visible borders" to the window, it just prints border characters around the window.
You are:
Upvotes: 17