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

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


■ 其他常用的一些函式

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

标签:unix,c语言,屏幕
0
投稿

猜你喜欢

  • 谷歌和访客忽视你 也许是以下的八个原因

    2009-01-08 17:08:00
  • 使用rsync在两台VPS间传输文件

    2011-08-24 20:13:41
  • FTP服务器软件SERV-U安全配置图文教程

    2007-08-07 10:25:00
  • 百度大更新,网站排名又喜又忧?

    2008-03-17 17:28:00
  • 在中国做个人站长最重要的一点

    2008-01-15 08:54:00
  • 一次Docker中Redis连接暴增的问题排查实战记录

    2022-01-23 08:10:29
  • 国家网络电视台将在2010年元旦前后正式亮相

    2009-11-14 10:13:00
  • 十大WordPress MU管理员插件

    2009-10-28 23:05:00
  • 商家在网店低价出售盗版书 淘宝网不担责

    2009-10-16 08:50:00
  • 网站SEO不容忽视的关键词选择技巧

    2007-09-23 13:44:00
  • Discuz!X1.5论坛搬家详细步骤及说明

    2011-04-14 13:07:00
  • VMware虚拟机安装Fedora 27 Workstation正式版(图文)

    2022-02-23 06:08:47
  • 外媒分析中国网游企业财报 网易即将取代盛大

    2010-03-04 10:29:00
  • 大型网站的运营指标

    2009-01-07 12:51:00
  • 详解springboot-修改内置tomcat版本

    2023-06-12 14:03:34
  • linux服务器后台设置小技巧

    2023-03-30 15:28:28
  • 友情链接的作用和好处

    2008-02-02 15:48:00
  • 江礼坤:深度剖析网店推广与运营

    2009-05-08 09:40:00
  • 得到回头客几种简单的办法

    2007-11-27 13:15:00
  • 丁磊养猪新动态 网易先投资1亿建生态养猪场

    2009-10-22 14:03:00
  • asp之家 网站运营 m.aspxhome.com