Ncurses 库用法:http://www.linux.org/docs/ldp/howto/NCURSES-Programming-HOWTO/index.html
暂时的跳离 curses 模式. 如果您在程式中须要 call shell ( 如呼叫 system() 函式 ) 或是需要做 sy
stem call, 就必须先以 endwin() 暂时跳离 curses 模式. 最後再以 wrefresh() doupdate() 来重返 c
urses 模式.
* cbreak() and nocbreak(): 当 cbreak 模式被开启後, 除了 DELETE 或 CTRL 等仍被视为特殊控
制字元外一切输入的字元将立刻被一一读取.当处於 nocbreak 模式时, 从键盘输入的字元将被储存在 bu
ffer 里直到输入 RETURN 或 NEWLINE.在较旧版的 curses 须呼叫 crmode(),nocrmode() 来取代 cbreak
(),nocbreak()
* nl() and nonl(): 用来决定当输入资料时, 按下 RETURN 键是否被对应为 NEWLINE 字元 ( 如 \n
). 而输出资料时, NEWLINE 字元是否被对应为 RETURN 和 LINDFEED 系统预设是开启的.
* echo() and noecho(): 此函式用来控制从键盘输入字元时是否将字元显示在终端机上.系统预设是
开启的.
* intrflush(win,bf): 呼叫 intrflush 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标
准输出入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当 bf 为 true 时, 当输入中断字元 ( 如 break) 时,
中断的反应将较为快速.但可能会造成萤幕的错乱.
* keypad(win,bf): 呼叫 keypad 时须传入两个值, win 为一 WINDOW 型态指标, 通常传入标准输出
入萤幕 stdscr. bf 为 TRUE 或 FALSE. 当开启 keypad 後, 可以使用键盘上的一些特殊字元, 如上下左
右>等方向键, curses 会将这些特殊字元转换成 curses.h 内定义的一些特殊键. 这些定义的特殊键通常
以 KEY_ 开头.
* refresh(): refresh() 为 curses 最常呼叫的一个函式. curses 为了使萤幕输出入达最佳化, 当
您呼叫萤幕输出函式企图改变萤幕上的画面时, curses 并不会立刻对萤幕做改变, 而是等到 refresh()
呼叫後, 才将刚才所做的变动一次完成. 其馀的资料将维持不变. 以尽可能送最少的字元至萤幕上. 减少
萤幕重绘的时间.如果是 initscr() 後第一次呼叫 refresh(), curses 将做清除萤幕的工作.
# 示例
功能:从键盘上读取的字元显示在萤幕上, 并且可以上下左右方向键来控制游标的位置, 当按下 [ESC] 後,
程式即结束.有点类似与全屏编辑程序的雏形.
源代码
1test.cpp:
#include <curses.h>
#include <stdio.h>
#include <stdlib.h>
#define StartX 1
#define StartY 1
void initial();
int main()
{
int x = StartX;
int y = StartY;
int ch;
char title[100];
initial();
box(stdscr,''|'',''-'');//将以 | 及 - 围成一个方框.
//box(stdscr,''X'',''X'');//
attron(A_REVERSE);//开启反白模式
sprintf(title,"curses program;windows[%d,%d]", COLS, LINES);
curses 编程初步:http://www.diybl.com/course/3_program/c++/cppsl/2008217/100128.html
评论2
最新资源