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

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

■ 视窗内的座标系

视窗内的座标系, 将以此视窗的起始点为新原点, 并以其相对位置作为新的
座标. 举例来说

win=newwin(10,20,5,5);
wmove(win,2,3);

将以 (5,5) 为新原点, y 方向移动 2 单位, x 方向移动 3 单位. 因此实际
上, 游标将移动至 y=7 x=8 的位置上.


■ POP-UP 视窗的建立

利用 curses 所提供的视窗处理函式, 我们可以做出像 ONLINE HELP 的 POP
-UP 画面. 当按下某键後, 一个新的视窗将像 " 跳 " 出来一般覆盖原来的画
面. 当关掉此视窗後, 又不会影响到原来被覆盖的画面.


下面的例子, 我们及模拟 ONLINE HELP 的形式, 当按下 'h' 键时, 视窗即出现


#include <curses.h>

main()
{
int ch,x,y;
WINDOW *win;

initscr(); ←┐
cbreak; │ 启动 curses 模式
noecho(); │
nonl(); ←┘

win=newwin(4,30,LINES/2-3, COLS/2-15);/* 建立一个新视窗, 其中LINES,COLS
*/
box(win,'|','-'); /* 为 curses 内定值,即萤幕行/列数*/
mvwaddstr(win,1,4,"This is another screen");
mvwaddstr(win,2,2,"Press anykey to continue..");

for (y=0;y<LINES;++y) /* 以'@'填满萤幕 */
for (x=0;x<COLS;++x)
mvprintw(y,x,"@");

for(;;) {
refresh();
ch=getch();
switch(ch) {
case 'q': /* 按 'q' 键离开 */
endwin();
exit(0);

case '\t': /* 按 [TAB] 键 呼叫另一视窗 */
touchwin(win); /* wrefresh() 前需 touchwin() */
wrefresh(win);
getch(); /* 按任意键关闭视窗 */
touchwin(stdscr);
break;

default:break;
}
}
}


执行结果:

┌————————————————————————————┐
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
└————————————————————————————┘
↑ 原来画面被 '@' 填满, 按下[TAB]键後
↓ 出现 POP-UP 画面.
┌————————————————————————————┐
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@□---------------------------+@@@@@@@@@@@ │
│ @@@@@@@@@@@@@| This is another screen |@@@@@@@@@@@ │
│ @@@@@@@@@@@@@| Press anykey to continue.. |@@@@@@@@@@@ │
│ @@@@@@@@@@@@@□---------------------------+@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
│ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ │
└————————————————————————————┘

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

猜你喜欢

  • 巧用404错误页 对搜索引擎友好挽留用户

    2009-01-17 18:07:00
  • 利用lynis如何进行linux漏洞扫描详解

    2023-08-20 00:36:51
  • 女站长做站有感

    2009-08-23 15:56:00
  • 速度速度 提升网站打开速度的七个好办法

    2008-12-15 12:00:00
  • 愚人节看恶作剧的十大去处:Google居首

    2008-04-04 16:56:00
  • 如何设置Exchange 2007的传输规则

    2010-03-13 19:12:00
  • 从迅雷新首页猜测迅雷业务的拆分

    2008-07-18 12:27:00
  • 聊聊kubernetes1.20用containerd替换docker(shim)的问题

    2022-08-10 04:18:29
  • 关于WordPress需要知道的100件事:主题篇

    2011-04-18 12:31:00
  • WordPress3.0无限级分类下拉菜单制作方法

    2011-12-02 12:45:19
  • 安全技术讲解:配置IIS蜜罐抵御黑客攻击

    2008-08-19 16:46:00
  • 详解Linux iptables 命令

    2023-07-24 21:26:47
  • 谷歌广告联盟本地化提速:Adsense将引入电子支付

    2008-07-22 12:15:00
  • 每天都坚持不懈的更新网站应该会有好回报

    2008-08-28 11:10:00
  • linux和windows主机实现dedecms伪静态

    2010-12-08 16:48:00
  • 关于网站用户粘度的简单计算方法

    2008-05-17 09:07:00
  • 共享控制台--让远程桌面更人性化(1)

    2007-03-27 10:40:00
  • Windows2003服务器安装及设置教程—文件及文件夹权限篇四—给文件夹设置权限三

    2010-02-02 18:10:00
  • Web服务器防木马及漏洞攻击的权限配置

    2010-05-11 17:55:00
  • Windows 2000中任务时间表的帐号问题

    2007-10-18 14:35:00
  • asp之家 网站运营 m.aspxhome.com