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

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


■ 游标的控制

move(y,x) 将游标移动至 x,y 的位置
getyx(win,y,x) 得到目前游标的位置
(请注意! 是 y,x 而不是 &y,&x )


■ 有关清除萤幕的函式

clear()
erase() 将整个萤幕清除
(请注意配合refresh() 使用)


■ 如何在萤幕上显示字元

echochar(ch) 显示某个字元

addch(ch) 显示某个字元
mvaddch(y,x,ch) 在(x,y) 上显示某个字元
相当於呼叫 move(y,x);addch(ch);

addstr(str) 显示一串字串
mvaddstr(y,x,str) 在(x,y) 上显示一串字串
相当於呼叫 move(y,x);addstr(str);

printw(format,str) 类似 printf() , 以一定的格式输出至萤幕
mvprintw(y,x,format,str) 在(x,y) 位置上做 printw 的工作.
相当於呼叫 move(y,x);printw(format,str);


■ 如何从键盘上读取字元

getch() 从键盘读取一个字元 (注意! 传回的是整数值)
getstr() 从键盘读取一串字元
scanw(format,&arg1,&arg2...) 如同 scanf, 从键盘读取一串字元

□例:

int ch;
char string1[80]; /* 请注意! 不可宣告为 char *string1; */
char string2[80];

echo(); /* 开启 echo 模式, 使输入立刻显示在萤幕上 */
ch=getch();
string1=getstr();
scanw("%s",string2);
mvprintw(10,10,"String1=%s",string1);
mvprintw(11,10,"String2=%s",string2);

■ 如何利用方向键

curses 将一些如方向键等特殊控制字元, 以 KEY_ 为开头定义在 curses.h
这个档案里头, 如 KEY_UP 即代表方向键的 " ↑ ". 但, 如果您想使用
curses.h 所为您定义的这些特殊键的话, 您就必须将 keypad 设定为
TRUE. 否则, 您就必须自己为所有的特殊键定义了.

curses.h 为一些特殊键的定义如下:

KEY_UP 0403 ↑
KEY_DOWN 0402 ↓
KEY_LEFT 0404 ←
KEY_RIGHT 0405 →
KEY_HOME 0406 Home key (upward+left arrow)
KEY_BACKSPACE 0407 backspace (unreliable)
KEY_F0 0410 Function keys.
KEY_F(n) (KEY_F0+(n)) Formula for f .
KEY_NPAGE 0522 Next page
KEY_PPAGE 0523 Previous page

以上仅列出笔者较常使用的一些控制键, 至於其他控制键的定义, 请自行参
阅 man curses (* 注三)

一并为您列出其他常用的一些特殊字元

[TAB] /t
[ENTER] /r
[ESC] 27
[BACKSPACE] 127


■ 如何改变萤幕显示字元的属性

为了使输出的萤幕画面更为生动美丽, 我们常须要在萤幕上做一些如反白,
闪烁等变化. curses 定义了一些特殊的属性, 透过这些定义, 我们也可以
在 curses 程式□控制萤幕的输出变化.

attron(mod) 开启属性
attroff(mod) 关闭属性

curses.h 里头定义了一些属性, 如:

A_UNDERLINE 加底线
A_REVERSE 反白
A_BLINK 闪烁
A_BOLD 高亮度
A_NORMAL 标准模式 (只能配合 attrset() 使用)


当使用 attron() 开启某一种特殊属性模式後, 接下来在萤幕的输出都会以
该种属性出现. 直到您呼叫 attroff() 将此模式关闭.

请注意, 当您欲 attron() 开启另一种属性时, 请记得利用 attroff()先关
闭原来的属性, 或直接以 attrset(A_NORMAL) 将所有特殊属性关闭.否则,
curses 会将两种属性做重叠处理.

□例:

attrset(A_NORMAL); /* 先将属性设定为正常模式 */
attron(A_UNDERLINE); /* 加底线 */
mvaddstr(9,10,"加底线"); /* 加底线输出一串字元 */
attroff(A_UNDERLINE); /* 关闭加底线模式, 恢复正常模式 */
attron(A_REVERSE); /* 开启反白模式 */
mvaddstr(10,10,"反白"); /* 输出一串反白字元 */
attroff(A_REVERSE); /* 关闭反白模式, 恢复正常模式 */
attron(A_BLINK); /* 开启闪烁模式 */
mvaddstr(11,10,"闪烁"); /* 输出一串闪烁字元 */
attroff(A_BLINK); /* 关闭闪烁模式, 恢复正常模式 */
attron(A_BOLD); /* 开启高亮度模式 */
mvaddstr(12,10,"高亮度"); /* 输出一串高亮度字元 */
attroff(A_BOLD); /* 关闭高亮度模式, 恢复正常模式 */

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

猜你喜欢

  • 上传漏洞解析-小韩网站编程安全系列二

    2007-07-13 10:08:00
  • 美国主机Fatcow购买图文教程

    2010-03-28 07:20:00
  • 合理配置DNS 内网外网访问两不误

    2010-02-20 19:16:00
  • 在中国做个人站长最重要的一点

    2008-01-15 08:54:00
  • 抵御黑客入侵防护服务器安全的七个技巧

    2009-01-13 17:23:00
  • 如何查看IIS中应用程序池相对应的网站

    2008-12-09 18:08:00
  • Windows服务有“备”无患

    2007-08-17 15:10:00
  • 浅析Windows2003的两种快速自动登录捷径

    2008-11-03 13:07:00
  • 做一个中国式站长必须知道的五十个问题

    2007-09-24 12:15:00
  • 如何在Win 7中制作出个性的QQ空间签名

    2009-11-23 15:03:00
  • Windows 2003 邮件服务器全攻略

    2008-06-10 12:09:00
  • docker添加多网卡的方法

    2021-10-28 06:27:27
  • 电脑报:百度已成为一台失控的敛财机器

    2008-12-01 16:23:00
  • 微软IE8测试版新特性详解

    2008-03-11 07:20:00
  • 美图秀秀一周年庆功能分享之旅 场景篇

    2009-10-29 15:51:00
  • win2003服务器安全设置教程

    2008-01-29 10:07:00
  • Adsense轻松学优化 (1) – “大”一点更好

    2008-11-06 17:46:00
  • 网站服务器安全需要注意三方面问题

    2009-11-24 10:05:00
  • Linux超详细gcc升级全过程

    2023-10-30 03:02:41
  • 中文原创博客Adsense点击分析与优化建议

    2009-03-24 13:43:00
  • asp之家 网站运营 m.aspxhome.com