网站运营
位置:首页>> 网站运营>> 在UNIX下如何用C语言保存和恢复屏幕(3)

在UNIX下如何用C语言保存和恢复屏幕(3)

 来源:asp之家 发布时间:2010-05-20 18:24:00 

标签:unix,c语言,屏幕

■ 其他常用的一些函式

beep() 发出一声哔声
box(win,ch1,ch2) 自动画方框 ch1: 画方框时垂直方向所用字元
ch2: 画方框时水平方向所用字元

example: box(stdscr,'|','-');
将以 | 及 - 围成一个方框

■ 应用完整□例

下面所举的例子, 即完全利用刚刚所介绍的含式来完成.这个程式可将从键
盘上读取的字元显示在萤幕上, 并且可以上下左右方向键来控制游标的位置
, 当按下 [ESC] 後, 程式即结束.

您有没有发现, 这不就是一个简单全萤幕编辑器的雏形吗?


#include <curses.h> /* 引进 curses.h , 并自动引进 stdio.h */


#define StartX 1 /* 决定游标初始位置 */
#define StartY 1

void initial();

main()
{
int x=StartX; /* 宣告 x,y 并设定其初值 */

int y=StartY;
int ch; /* 宣告 ch 为整数,配合 getch() 使用 */


initial(); /* 呼叫 initial(), 启动 curses 模式, */

/* 并完成其它设定 */


box(stdscr,'|','-'); /* 画方框 */


attron(A_REVERSE); /* 开启反白模式 */

mvaddstr(0,20,"Curses Program"); /* 在 (20,0) 处输出反白字元 */

attroff(A_REVERSE); /* 关闭反白模式 */

move(x,y); /* 将游标移至初始位置 */


do { /* 以无限回圈不断等待输入 */

ch=getch(); /* 等待自键盘输入字元
switch(ch) { /* 判断输入字元为何 */


case KEY_UP: --y; /* 判断是否"↑"键被按下 */

break;
case KEY_DOWN: ++y; /* 判断是否"↓"键被按下 */

break;
case KEY_RIGHT: ++x; /* 判断是否"→"键被按下 */

break;
case KEY_LEFT: --x; /* 判断是否"←"键被按下 */

break;
case '\r': /* 判断是否 ENTER 键被按下 */

++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();
}

0
投稿

猜你喜欢

手机版 网站运营 asp之家 www.aspxhome.com