UNIX下c语言的图形编程--curses.h 函式库
R 键被按下
*/
++y;
x=0;
break;
case '\t': /* 判断是否 TAB 键被按下
*/
x+=7;
break;
case 127: /* 判断是否 BACKSPACE 键被按下
*/
mvaddch(y,--x,' ');/* delete 一个字元
*/
break;
case 27: endwin(); /* 判断是否[ESC]键被按下
*/
exit(1); /* 结束 curses 模式
*/
/* 结束此程式
*/
default:
addch(ch); /* 如果不是特殊字元, 将此字元印
出 */
x++;
break;
}
move(y,x); /* 移动游标至现在位置
*/
} while (1);
}
void initial() /* 自定开启 curses 函式
*/
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
■ 後记
学完了上述的一些命令, 相不相信您已经可以写出一个漂亮的全萤幕编辑
器了? 事实上, curses 提供的函式不下 200 个, 可是笔者认为, 一切再
复杂的函式都可以用本文提到的一些组合变化而成, 学了太多的函式, 只
是徒增自己困扰罢了. 当然, 如果您对其它函式有兴趣, 可以自行参阅
curses 说明档. ( 方法: % man curses ) 本文不过行抛砖引玉之效, 也
希望未来能陆续出现更多同学自行创作的程式.
* 任何疑问及建议, 欢迎 e-mail 至 ljh@CCCA.NCTU.edu.tw. 谢谢 ! *
注一:
请参考 /usr/share/lib/termcup
/usr/share/lib/terminfo/s/sun
注二:
1.如果是 BSD 的版本, 需使用
cc [file.c] -lcurses -ltermcap 来完成 compile.
2.计中工作站不知何故将原来的 /usr/5bin/cc 更改为 /usr/5bin/cc.org
因此, 您若想在计中工作站 compile curses 程式.需以 /usr/5bin/cc.
org
取代 /usr/5bin/cc , 否则 compile 可能发生错误.
3.较旧版的 curses 需同时引进 curses 和 termlib 这两个 library,
因此, 您必须使用 /usr/5bin/cc [file.c] -lcurses -ltermlib 来
compile.
注三:
根据笔者的经验, 上下左右方向键应可正常使用而不会发生问题, 但其它
如 PgUp,PgDn,功能键,Home,End 等特殊键, 很容易因机器, 键盘不同而无
法使用, 因此, 若您的程式须要在不同的机器上使用, 建议您只用方向键来
控制, 其它的特殊键少用为妙.
至於 PgUp,PgDn 一些特殊键的控制方法, 由於较为复杂, 有兴趣的同学可
参
考 tin 原始程式 curses.c 内所使用的一些方法.
*/
++y;
x=0;
break;
case '\t': /* 判断是否 TAB 键被按下
*/
x+=7;
break;
case 127: /* 判断是否 BACKSPACE 键被按下
*/
mvaddch(y,--x,' ');/* delete 一个字元
*/
break;
case 27: endwin(); /* 判断是否[ESC]键被按下
*/
exit(1); /* 结束 curses 模式
*/
/* 结束此程式
*/
default:
addch(ch); /* 如果不是特殊字元, 将此字元印
出 */
x++;
break;
}
move(y,x); /* 移动游标至现在位置
*/
} while (1);
}
void initial() /* 自定开启 curses 函式
*/
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
■ 後记
学完了上述的一些命令, 相不相信您已经可以写出一个漂亮的全萤幕编辑
器了? 事实上, curses 提供的函式不下 200 个, 可是笔者认为, 一切再
复杂的函式都可以用本文提到的一些组合变化而成, 学了太多的函式, 只
是徒增自己困扰罢了. 当然, 如果您对其它函式有兴趣, 可以自行参阅
curses 说明档. ( 方法: % man curses ) 本文不过行抛砖引玉之效, 也
希望未来能陆续出现更多同学自行创作的程式.
* 任何疑问及建议, 欢迎 e-mail 至 ljh@CCCA.NCTU.edu.tw. 谢谢 ! *
注一:
请参考 /usr/share/lib/termcup
/usr/share/lib/terminfo/s/sun
注二:
1.如果是 BSD 的版本, 需使用
cc [file.c] -lcurses -ltermcap 来完成 compile.
2.计中工作站不知何故将原来的 /usr/5bin/cc 更改为 /usr/5bin/cc.org
因此, 您若想在计中工作站 compile curses 程式.需以 /usr/5bin/cc.
org
取代 /usr/5bin/cc , 否则 compile 可能发生错误.
3.较旧版的 curses 需同时引进 curses 和 termlib 这两个 library,
因此, 您必须使用 /usr/5bin/cc [file.c] -lcurses -ltermlib 来
compile.
注三:
根据笔者的经验, 上下左右方向键应可正常使用而不会发生问题, 但其它
如 PgUp,PgDn,功能键,Home,End 等特殊键, 很容易因机器, 键盘不同而无
法使用, 因此, 若您的程式须要在不同的机器上使用, 建议您只用方向键来
控制, 其它的特殊键少用为妙.
至於 PgUp,PgDn 一些特殊键的控制方法, 由於较为复杂, 有兴趣的同学可
参
考 tin 原始程式 curses.c 内所使用的一些方法.

