C语言指针原理教程:Ncurses

2023年 7月 14日 28.2k 0

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

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论