一:编译方法
gcc [file.c] -lcurses
二:各类函数
1.initscr(): initscr() 是一般 curses 程式必须先呼叫的函数, 一但这个函数被呼叫之后, 系统将根据终端机的形态并启动 curses 模式.
2.endwin(): curses 通常以呼叫 endwin() 来结束程式. endwin() 可用来关闭curses 模式, 或是暂时的跳离 curses 模式. 最后再以wrefresh() doupdate() 来重返 curses 模式.
3.cbreak() and nocbreak(): 当 cbreak 模式被开启后, 除了 DELETE 或 CTRL 等仍被视为特殊控制字元外一切输入的字元将立刻被一一读取.当处于 nocbreak 模式时, 从键盘输入的字元将被储存在 buffer 里直到输入 RETURN或 NEWLINE.
4.nl() and nonl(): 用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字元 ( 如 /n ). 而输出资料时, NEWLINE 字元是否被对应为 RETURN 和 LINDFEED系统预设是开启的.
5.echo() and noecho(): 此函式用来控制从键盘输入字元时是否将字元显示在终端机上.系统预设是开启的.
6.intrflush(win,bf): 呼叫 intrflush 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当 bf 为 true 时, 当输入中断字元 ( 如 break) 时, 中断的反应将较为快速.但可能会造成萤幕的错乱.
7.keypad(win,bf): 呼叫 keypad 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标准输出入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当开启 keypad后, 可以使用键盘上的一些特殊字元, 如上下左右>等方向键, curses 会将这些特殊字元转换成 8.curses.h 内定义的一些特殊键. 这些定义的特殊键通常以 KEY_ 开头.
9.refresh(): refresh() 为 curses 最常呼叫的一个函式. curses 为了使萤幕输出入达最佳化, 当您呼叫萤幕输出函式企图改变萤幕上的画面时, curses 并不会立刻对萤幕做改变, 而是等到refresh() 呼叫后, 才将刚才所做的变动一次完成. 其余的资料将维持不变. 以尽可能送最少的字元至萤幕上. 减少萤幕重绘的时间.如果是 initscr() 后第一次呼叫 refresh(), curses 将做清除萤幕的工作.
三:游标的控制:
1.move(x,y): 将游标移动至 x,y 的位置.
2.getyx(win,y,x): 得到目前游标的位置.
四:如何从键盘上读取字元:
1.getch(): 从键盘读取一个字元.
2.getstr(): 从键盘读取一串字元.
3.scanw(format,&arg1,&arg2…): 如同 scanf, 从键盘读取一串字元.
五:如何在萤幕上显示字元:
1.echochar(ch): 显示某个字元.
2.addch(ch): 显示某个字元.
3.mvaddch(y,x,ch): 在(x,y) 上显示某个字元. 相当于呼叫move(y,x);addch(ch);
4.addstr(str): 显示一串字串.
5.mvaddstr(y,x,str): 在(x,y) 上显示一串字串. 相当于呼叫move(y,x);addstr(str);
6.printw(format,str): 类似 printf() , 以一定的格式输出至萤幕.
7.mvprintw(y,x,format,str): 在(x,y) 位置上做 printw 的工作. 相当于呼叫move(y,x);printw(format,str);
六:方向键
KEY_UP 0403 ↑
KEY_DOWN 0402 ↓
KEY_LEFT 0404 ←
KEY_RIGHT 0405 →