C语言指针原理教程:Ncurses
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