标题应该说明一切,所以说我创建了一个像这样的颜色对:
init_pair(1, COLOR_RED, COLOR_BLACK);
Run Code Online (Sandbox Code Playgroud)
然后我想重新定义它,如下所示:
init_pair(1, COLOR_GREEN, COLOR_BLUE);
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,但是还有其他功能可以让我这样做吗?或者,到底有没有函数可以让我只使用显式的前景色/背景色而不使用颜色对?
预先感谢,如果这还不够清楚,请告诉我。
编辑:尝试后,您可以使用重新定义对init_pair,而我的代码中的问题出在其他地方。
您可以一次定义最多 7 个颜色对,并根据需要按顺序显示所有颜色对。您只需更改号码并刷新即可。例如。(我们将使用 3 来完成)请参阅此处7 的示例的电子打印输出
#include <curses.h>
int COLOR_PAIR (int PAIR_NUMBER)
init_pair(1, COLOR_GREEN, COLOR_RED);
init_pair(2, COLOR_GREEN, COLOR_BLUE);
init_pair(3, COLOR_RED, COLOR_BLUE);
for (i=1, i <=3, i++){
attroffset(A_BOLD)
attrset(COLOR_PAIR(i))
refresh();
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有很多对,并且第二个颜色始终相同,或者每对中第一个颜色都是唯一的,您可以使用 attron() 打开它,例如 attron(COLOR_PAIR(COLOR_BLUE)); (这在我们的定义中不起作用)
你可以在这里查看 attron 的示例