1、安装Ncurses
Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
Ncurses是一个能提供基于文本终端窗口功能的动态库. Ncurses可以:
· 只要您喜欢,您可以使用整个屏幕
· 创建和管理一个窗口
· 使用8种不同的彩色
· 为您的程序提供鼠标支持
· 使用键盘上的功能键
Ubuntu下
mysea@mysea-desktop:~$ sudo apt-get install libncurses5-dbg libncurses5-dev mysea@mysea-desktop:~/test$ gcc -lncurses -o cursestest cursestest.c
Freebsd下
cd /usr/ports/devel/ncurses-devel make install clean
2、hello,world
#include int main(void){ initscr();//初始化 box(stdscr,ACS_VLINE,ACS_HLINE);//画边框 mvaddstr(15,2,"hello,world");//在15,2显示字符串 refresh();//刷新屏幕 getch();//等待按键 endwin();//结束 return 0; }
编译及运行
dp@dp:~/cursestest % gcc -lncurses 1.c -o mytest dp@dp:~/cursestest % ./mytest
3、色彩
然后编写下面代码:
#include#include
#include
int main(void){
//init_pair(short index,short foreground,short background)初始化颜色索引
//attron(COLOR_PAIR(索引号)|属性)
setlocale(LC_ALL,"");
initscr();//初始化
box(stdscr,ACS_VLINE,ACS_HLINE);//画边框
if (!has_colors()||start_color()==ERR){
endwin();
printf("终端不支持颜色\n");
return 0;
}
init_pair(1,COLOR_GREEN,COLOR_BLACK);
init_pair(2,COLOR_RED,COLOR_BLACK);
init_pair(3,COLOR_WHITE,COLOR_BLUE);
int i=0;
for (i=1;i");//菜单选中的MARK
//获得菜单的行列数
scale_menu(mymenu,&mrows,&mcols);
//建立窗口和子窗口
win=newwin(mrows+2,mcols+2,3,30);
keypad(win,TRUE);
box(win,0,0);
subwin=derwin(win,0,0,1,1);
//设置菜单的窗口
set_menu_sub(mymenu,subwin);
//在子窗口上放置菜单
post_menu(mymenu);
refresh();
wrefresh(win);
//获得输入,并移动选择到相应的菜单项
while(toupper(ch=wgetch(win))!='\n'){
if(ch==KEY_DOWN)
menu_driver(mymenu,REQ_DOWN_ITEM);//移动菜单选择
else if(ch==KEY_RIGHT)
menu_driver(mymenu,REQ_RIGHT_ITEM);
else if (ch==KEY_UP)
menu_driver(mymenu,REQ_UP_ITEM);
else if (ch==KEY_LEFT)
menu_driver(mymenu,REQ_LEFT_ITEM);
}
//输出当前项
mvprintw(LINES-2,0,"you select the item :%s\n",item_name(current_item(mymenu)));
refresh();
unpost_menu(mymenu);
getch();
//释放内存
free_menu(mymenu);
for(i=0;i