c - C 编程 ncurses 在多个窗口上的颜色不起作用
问题描述
我在 Linux 上使用 ncurses,我创建了两个窗口(winReception 和 winTransmission),基本上 winTransmission 用于编写要在 winReception 中打印的内容。所以,我想以某种颜色打印 winReception 中的文本,但它无法正常打印,没有颜色。
关于为什么它不起作用的任何想法?我尝试更改窗口的颜色,但它改变了窗口中所有文本的颜色,这不是我想要的。
编辑:忘了提到 winTransmission 不需要改变颜色。只有 winReception 需要改变颜色。
这是您需要了解我在做什么的代码:
initscr();
/* WINDOW RECEPTION */
winReception = newwin(27, 0, 0, 0);
/* WINDOW TRANSMISSION */
winTransmission = newwin(8, 0, 27, 0);
if (!has_colors()) {
endwin();
fprintf(stderr, "Error - no color support on this terminal\n");
exit(1);
}
if (start_color() != OK) {
endwin();
fprintf(stderr, "Error - could not initialize colors\n");
exit(2);
}
init_pair(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_RED, COLOR_GREEN);
attrset(COLOR_PAIR(1));
/* WINDOW RECEPTION */
mvwprintw(winReception, 1, 2, "%s", textinwindow);
wrefresh(winReception);
/* WINDOW TRANSMISSION */
touchwin(winTransmission);
wclear(winTransmission);
wrefresh(winTransmission);
解决方案
您设置颜色属性的唯一地方是
attrset(COLOR_PAIR(1));
但这仅适用于stdscr
也许你的意思是
wattrset(winReception, COLOR_PAIR(1));
推荐阅读
- arrays - 从另一个 api 端点映射数组并通过 React 子组件的 prop
- python - 为什么我得到这个索引超出范围错误?
- linux - Trivy 扫描在 Qcow2 图像上失败
- react-native - React Native 获取失败
- c - 在没有另一个线程的情况下定期运行代码
- c# - 为什么我得到“非泛型方法 Parser.ParseArguments(string[], object) 不能与类型参数一起使用”
- java - java.lang.UnsatisfiedLinkError: dlopen failed: library ".so" required or dlopened by ".so" is not accessible for the namespace "classloader-namespace"
- firefox - 如何在 Appium 中将上下文从 Native App 切换到 Web App
- java - 如何通过 bulkrequest 更新嵌套的 elasticsearch 值?
- lua - Lua:从表中定义函数