天津网站快速排名提升,蚂蚁币是什么网站建设,江门营销型网站建设多少钱,网站能实现什么功能1.安装 ubuntu11.10下默认没有安装curses函数库#xff0c;#xff08;CentOS下默认已经安装#xff0c;可以直接在usr/include下查看是否有该头文件来确定#xff09;使用 sudo apt-get install ncurses-dev 安装curses库#xff0c;这样在curses函数库的头文件和库… 1.安装 ubuntu11.10下默认没有安装curses函数库CentOS下默认已经安装可以直接在usr/include下查看是否有该头文件来确定使用 sudo apt-get install ncurses-dev 安装curses库这样在curses函数库的头文件和库文件就被分别安装在/usr/include/和/usr/lib/下在编译程序时直接使用命令 gcc program.c -o program -lcurses 完成编译运行。 2.curses术语和概念 curses工作在屏幕窗口和子窗口之上。屏幕是设备全部可用显示面积对终端是该窗口内所有可用字符位置窗口与具体例程有关。如基本的stdscr窗口等。 curses使用两个数据结构映射终端屏幕stdscr和curscr。stdscr是“标准屏幕”逻辑屏幕在curses函数库产生输出时就刷新是默认输出窗口用户不会看到该内容。curscr是“当前屏幕”物理屏幕在调用refresh函数是函数库会将curscr刷新为stdscr的样子。 使用initscr();和endwin();两个函数对函数库进行初始化和重置。 #includecurses.hWINDOW *initscr(void);
int endwin(void); 3.屏幕 函数基本分为如下几类 输出到屏幕 1 int addch(const chtype char_to_add);2 int addchstr(chtype *const string_to_add); //当前位置添加字符串3 4 int printw(char *format, ...); //类似与printf5 int refresh(void); //刷新物理屏幕6 int box(WINDOW *win_ptr, chtype vertical, chtype horizontal); //围绕窗口绘制方框7 int insch(chtype char_to_insert); //插入一个字符已有字符后移)8 int insertln(void); //插入空白行9 int delch(void);
10 int deleteln(void); //删除字符和空白行
11
12 int beep(void); //终端响铃
13 int flash(void); //闪烁 从屏幕读取字符 1 chtype inch(void); //返回光标位置字符
2 int instr(char *string); //
3 int innstr(char *string, int numbers); //将返回内容写入字符数组中 清除屏幕 int erase(void); //在屏幕的每个位置写上空白字符
int clear(void); //使用一个终端命令来清除整个屏幕内部调用了clearok来执行清屏操作,(在下次调用refresh时可以重现屏幕原文
int clrtobot(void); //清除光标位置到屏幕结尾的内容
int clrtoeol(void); //清除光标位置到该行行尾的内容 移动光标 int move(int new_y, int new_x); //移动stdcsr的光标位置 字符属性指对字符设置加粗反色显示等 预定义的属性A_BLINK, A_BOLD, A_DIM, A_REVERSE, A_STANDOUT, A_UNDERLINE. int attron(chtype attribute);
int attroff(chtype attribute); //启用或关闭某属性
int attrset(chtype attribute);
int standout(void);
int standend(void); //这两个表示更加通用的强调模式通常映射为反白显示 4.键盘 键盘模式 int echo();
int noecho(); //用于开启和关闭键盘输入字符的回显//完成initscr后输入模式为预处理模式1所有处理是基于行的就是说只有按下回车输入数据才被传给程序2键盘特殊字符启用按下合适组合键会产生信号int cbreak(); //设置cbreak模式字符一键入直接传给程序
int nocbreak(); //关闭int raw(); //关闭特殊字符处理
int noraw(); //同时回复默认模式和特殊字符处 键盘输入: //与标准io库的getchar, gets, scanf类似int getch();
int getstr(char *string);
int getnstr(char *string, int number); //建议使用
int scanw(char*format,...); 5.窗口 curses函数库支持在一个物理屏幕上显示多个窗口。 5.1 WINDOW结构 从前面initscr返回可以看到标准屏幕stdscr实际上就是WINDOW结构的它的作用类似与标准输出stdout。所以可以使用下面函数自己创建和销毁窗口。 WINDOW *newwin(int lines, int cols, int start_y, int start_x); //创建从(start_y, start_x)开始的lines行cols列的窗口。
int delwin(WINDOW *window); //销毁上面创建的窗口千万不要删除stdscr和curscr 当lines和cols为0时说明新窗口右下角落在屏幕右下角上。 5.2 通用函数 前面的addch和printw函数用于在屏幕上增加字符它们都可以通过增加前缀变为通用函数。 前缀w用于窗口(添加一个WINDOWS指针参数mv用于光标移动在该位置执行操作addch或printw添加两个坐标值参数mvw用于在窗口中移动光标。组成如下函数 addch, waddch, mvaddch, mvwaddchprintw, wprintw, mvprintw, mvwprintw 5.3移动和更新窗口 int mvwin(WINDOW *win, int new_y, int new_x); //移动窗口int wrefresh(WINDOW *win);
int wclear(WINDOW *win);
int werase(WINDOW *win);
//类似于上面的refresh, clear, erase但是此时针对特定窗口操作而不是strcsrint touchwin(WINDOW *win); //指定该窗口内容已改变
int scrollok(WINDOW *win, bool flag); //指定是否允许窗口卷屏
int scroll(WINDOW *win); //把窗口内容上卷一行 6.子窗口 WINDOW *subwin(WINDOW *parent, int lines, int cols, int start_y, int start_x); //创建子窗口。
int delwin(WINDOW *window); //销毁子窗口 子窗口除了没有自己的屏幕字符存储空间外其他与新窗口相同。 主要用于卷动另一窗口只能个的部分内容将这部分区域设为子窗口然后卷动即可 7.keypad模式 第4部分看到了curses提供了处理键盘的功能。另外键盘一般还会有方向键功能键数字小键盘Insert, Home等按键。这些键会发送以\转义字符开头的字符串序列。解码这些键就要区分“单独按下\键”和“按下功能键而产生\开头的字符串序列” 在curses函数库中头文件curses.h提供了一组以KEY_为前缀的定义来管理逻辑键。 curses在启动时会 关闭转义序列与逻辑键之间的转换功能需要调用如下函数开启 int keypad(WINDOW *win, bool keypad_on); //keypad_on参数为true时启用keypad模式。此时读键盘操作能够返回 用户在按下逻辑键时对应的KEY_定义 8.彩色显示 curses能显示简单的彩色。必须同时定义一个字符的前景色和背景色称为颜色组合。使用方法如下 首先检查终端是否支持彩色显示然后对curses颜色例程初始化 bool has_colors(void);
int start_color(void); 若start_color成功返回OK变量COLORS定义为可用颜色数目一般为8种COLOR_PAIRS定义为可用颜色组合数目一般为64种。 int init_pair(shor pair_number, short foreground, short background); //初始化pair_number号颜色组合
int COLOR_PAIR(int pair_number); //对pair_number号颜色组合作为属性来访问用于前面的attr函数
int pair_content(short pair_number, short *foreground, short *background); //获取已定义的颜色组合信息 更详细的参考http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/——《NCURSES Programming HOWTO》 http://invisible-island.net/ncurses/man/ncurses.3x.html——ncurses 参考Beginning Linux Programming, 《Linux程序设计》