如何解决文本的背景颜色溢出到边框符号c,ncurses
窗口边框符号选取只有文本应具有的背景颜色。如果删除了边框符号,则文本末尾的背景颜色会被剪短,而不是覆盖整个窗口宽度。我错过了什么,我应该如何修复它?
如果不清楚,因为 stackoverflow 正在唠叨我的细节,我的目的是让每个窗口中文本的背景颜色覆盖给定行上的整个窗口宽度。
#include <ncurses.h>
typedef struct ncwin
{
int startx;
int starty;
int width;
int height;
WINDOW *win;
} ncwin;
WINDOW *create_newwin(int height,int width,int starty,int startx);
void destroy_win(WINDOW *local_win);
int main(int argc,char *argv[])
{ ncwin win[3];
int ch,i;
initscr(); /* Start curses mode */
cbreak(); /* Line buffering disabled,Pass on
* everty thing to me */
keypad(stdscr,TRUE); /* I need that nifty F1 */
refresh();
start_color();
init_pair(1,COLOR_RED,COLOR_BLACK);
init_pair(2,COLOR_BLUE,COLOR_BLACK);
init_pair(3,COLOR_GREEN,COLOR_BLACK);
for (i = 0; i < 3; i++)
{
win[i].height = LInes;
win[i].width = (COLS / 6) * (i + 1);
win[i].starty = 0;
win[i].startx = (i == 0) ? 0 : win[i - 1].startx + win[i - 1].width + 1;
win[i].win = create_newwin(win[i].height,win[i].width,win[i].starty,win[i].startx);
wattron(win[i].win,COLOR_PAIR(i + 1));
wprintw(win[i].win," hello!\n");
wattron(win[i].win,COLOR_PAIR(i + 1));
wrefresh(win[i].win);
}
while((ch = getch()) != KEY_F(1));
for (i = 0; i < 3; i++)
destroy_win(win[i].win);
refresh();
endwin();
return 0;
}
WINDOW *create_newwin(int height,int startx)
{
WINDOW *local_win;
local_win = newwin(height,width,starty,startx);
Box(local_win,0);
wrefresh(local_win);
return local_win;
}
void destroy_win(WINDOW *local_win)
{
wborder(local_win,' ',' ');
wrefresh(local_win);
delwin(local_win);
}
解决方法
要解决这个问题,您需要两个窗口:
- 一个外部窗口,用于绘制一个框,以及
- 一个内部窗口,用于绘制文本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。