getyx()和move()。getyx()函数其实是一个定义在
ncurses.h 中的宏,它会给出当前光标的位置,需要注意的是我们不能用指针作为参数,只
能传递一对整型变量(前文提到过)。函数move()将光标移动到指定位置
调用attron()函数开始启动文字修饰,当找到“*/”(注释结束处标志)的地方,就会调用attroff()函数停止为后续文字继续添加修饰。
A_NORMAL 普通字符输出(不加亮显示)
A_STANDOUT 终端字符最亮
A_UNDERLINE 下划线
A_REVERSE 字符反白显示
A_BLINK 闪动显示
A_DIM 半亮显示
A_BOLD 加亮加粗
A_PROTECT 保护模式
A_INVIS 空白显示模式
A_ALTCHARSET 字符交替
A_CHARTEXT 字符掩盖
COLOR_PAIR(n) 前景、背景色设置
在两种修饰属性间加一个“|”字符:
attron(A_BOLD | A_BLINK);
dp@dp:~/cursestest % cat 2.c
#include <ncurses.h>
#include <locale.h>
int main(){
//init_pair(short index,short foreground,short background)初始化颜色索引
//attron(COLOR_PAIR(索引号)|属性)
//newwin建立窗口,derwin建立窗口的子窗口(相对于父窗口相对位置),subwin建立窗口的子窗口(相对于根窗口绝对位置)
setlocale(LC_ALL,"");
char mesg[]="您的名字:"; /* 将要被打印的字符串信息*/
char name[80];
int y,x;
initscr();//初始化
mvprintw(1,1,"WIN1");
mvprintw(2,1,"您好");
mvprintw(3,1,"%s",mesg);
getyx(stdscr, y, x);
move((y+2),2);
attron(A_REVERSE);
printw("*********************");
refresh();
attroff(A_REVERSE);
getyx(stdscr, y, x);
move((y-1),1);
scanw("%s",name);
mvprintw(6,1,"%s好,很高兴认识您", name);
refresh();
endwin();//结束
return 0;
}
dp@dp:~/cursestest % gcc -lncursesw 2.c -o mytest
dp@dp:~/cursestest % ./mytest
常用色彩
COLOR_BLACK 0 黑色
COLOR_RED 1 红色
COLOR_GREEN 2 绿色
COLOR_YELLOW 3 黄色
COLOR_BLUE 4 蓝色
COLOR_MAGENTA 5 洋红色
COLOR_CYAN 6 蓝绿色, 青色
COLOR_WHITE 7 白色
色彩及样式的设置
int attroff(int attrs);
int wattroff(WINDOW *win, int attrs);
int attron(int attrs);
int wattron(WINDOW *win, int attrs);
attrset() 为整个窗口设置一种修饰属性。而 attron()函数只从被调用的地方开始设置。所以 attrset()会覆盖掉你先前为整个窗口设置的所有修饰属性。attr_get() 函数用来取得当前窗口的修饰属性设置以及背景、文字颜色。在这些函数前面加上w,表示可对窗口做修饰,否则就是对stdscr标准输出窗口。
#include <locale.h>
#include <ncurses.h>
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
initscr(); /*启动curses 模式*/
if(has_colors() == FALSE)
{
endwin();
printf("你的终端不支持色彩!\n");
return (1);
}
start_color(); /*启动color 机制*/
init_pair(1, COLOR_RED, COLOR_BLACK);
WINDOW *win1;
win1=newwin(15,50,1,1);//新窗口(行,列,begin_y,begin_x)
box(win1,ACS_VLINE,ACS_HLINE);
wattron(win1,COLOR_PAIR(1));
mvwprintw(win1,8,21, "彩色的世界...");
wattroff(win1,COLOR_PAIR(1));
wrefresh(win1);
endwin();
return 0;
}
dp@dp:~/cursestest % gcc -lncursesw a.c -o mytest
dp@dp:~/cursestest % ./mytest