• Copyright(C) NCURSES Programming HOWTO

屏幕操作

在这一章我们将了解一些管理屏幕的函数。这些函数经常被用于编写基于控制台的游戏。顺便让我们写一些非常有意思的程序。

getyx()系列函数

getyx() 函数可以用来取得当前光标的位置。并把它存储在传递给它的两个变量中。getyx()是一个宏,所以不能向它传送变量的地址。你只能这样调用它:

/* win: 窗口的指针
 * y, x: 光标坐标的y, x 值将被赋到这两个变量
 */
getyx(win, y, x);

getparyx()用于取得子窗口相对主窗口的起始坐标,它在更新子窗口时经常使用。当设计一个多级菜单时,如果用存储菜单坐标方法来处理,就变得非常困难。然而使用getparyx()函数找到该菜单的相对坐标的方案就显的比较简单。getbegyx()函数和getmaxyx()函数用于以同样的方式存储当前窗口的起始和结束坐标,可以高效地管理窗口和子窗口。

屏幕转储

开发游戏的时候,通常存储和恢复屏幕是十分必要的。scr_dump()函数可以把当前屏幕的内容存入指定文件,即以文件名作为函数的参数(函数原型:scr_dump(const char *file) ——译者注)。而通过scr_restore()函数调用屏幕数据文件来恢复屏幕( 函数原型:scr_restore(constchar *file) ——译者注)。在游戏设计中这两个函数可以用来快速切换游戏场景。

窗口转储

窗口转储同屏幕转储的原理一样。getwin()函数(函数原型:getwin(FILE * filep) ——译者注)用来将窗口内容存储到一个指定的文件中。putwin()函数(函数原型:putwin(WINDOW*win, FILE * filep) ——译者注)则调用相应的文件来恢复窗口。copywin()可以将一个窗口拷贝到另一个窗口,即将源窗口矩形区域(由参数指定)中的内容复制到目标窗口指定的矩形区域(由参数指定)里。而最后的参数用来选择是否要覆盖目的窗口:如果参数为TRUE,那么就会覆盖目标窗口的内容;如果参数为FLASE,那么就会重写目的窗口中的内容。以下为函数的原型:

int copywin(const WINDOW *src,  /* 源窗口指针*/WINDOW *dst,        /* 目的窗口指针*/int sminrow,        /* 源窗口所选矩形区域的最小行数*/int smincol,        /* 源窗口所选矩形区域的最小列数*/int dminrow,        /* 目的窗口所选矩形区域的最小行数*/int dmincol,        /* 目的窗口所选矩形区域的最小列数*/int dmaxrow,        /* 目的窗口所选矩形区域的最大行数*/int dmaxcol,        /* 目的窗口所选矩形区域的最大列数*/int over)           /* 是否覆盖目的窗口*/

ncurses屏幕操作:getyx(),getparyx(),getmaxyx(),scr_dump(),scr_restore(),getwin(),putwin()相关推荐

  1. C语言嵌入式系统编程修炼之道——屏幕操作篇

    C语言嵌入式系统编程修炼之道--屏幕操作篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 1.汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非 ...

  2. java切入式编程显示屏_C语言嵌入式系统编程修炼之四:屏幕操作

    C语言嵌入式系统编程修炼之四:屏幕操作 作者:宋宝华   更新日期:2005-07-22 汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要 ...

  3. 华为系统里的计算机,一个屏幕操作两个系统 让你的手机装进华为MateBook 14电脑里...

    2020春节一过全国掀起了一股在线办公.在线学习的热潮.笔者也由于特殊原因,无法回到工作室办公,只好用身边的华为MateBook 14 2020款居家远程办公. 也正是在这段日子,让笔者充分体会到华为 ...

  4. C语言嵌入式系统编程修炼之(四)屏幕操作

    C语言嵌入式系统编程修炼之屏幕操作 汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能.例如,一个微波炉的LCD上没有必要提供显示 ...

  5. python控制多个屏幕_多设备控制 + 屏幕操作录制重放 实现完整多设备测试流程...

    测试人员在找到一个问题之后从上报到修复通常是一个比较漫长而且需要大量交流的过程.很多时候开发人员常常会有以下抱怨: "你怎么弄崩溃的?","我这里好好的啊",& ...

  6. Android与.Net交互模拟用户屏幕操作添加APN和网络4G/3G切换

    前几天接到一个需求,我们的客户需要对手机网络接入点进行可用性测试,简单点说就是需要实现Android上的APN配置的添加,APN切换网络模式4G/3G/2G切换,我要调研下写个demo. 因为是要实现 ...

  7. C语言嵌入式系统编程修炼之四:屏幕操作

    汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能.例如,一个微波炉的LCD上没有必要提供显示"电子邮件"的功 ...

  8. python点击屏幕_Python屏幕操作

    目的: 实现对电脑屏幕自动点击操作,减少工作量.python 环境3.6 windows 10.目前教程比较多的是PyUserinput 但是pyhook是一个坑啊,不兼容3.x 解决比较麻烦.因此找 ...

  9. Auto.js进行自动化熄灭屏幕操作(超简单版本)

    最近在写脚本的时候,发现定时脚本会发生auto.js在后台运行,导致手机无法自动熄屏的问题(毕竟大家写定时脚本都是为了方便,比如在不需要使用手机的时候完成一些重复性操作...).但是我们又不能直接停止 ...

最新文章

  1. URL、Session、Cookies、Server.Transfer、Application和跨页面传送。
  2. 我的世界minecraft-Python3.9编程(4)-近实时刷新玩家位置
  3. 利用 WebService实现远程服务器文件的上传和下载
  4. Hadoop 00_hadoop伪分布式,完全分布式,HA搭建
  5. okhttp builder_从 OkHttp 到 Retrofit 到 OkHttps
  6. Python学习笔记之列表(五)
  7. 服务端渲染SSR的理解
  8. Android官方api的下载
  9. System.Web.HttpException: 无法验证数据解决办法
  10. Flink Kafka 端到端 Exactly-Once 分析
  11. 计算机操作系统详细学习笔记(一):计算机操作系统概述
  12. 恐怖黎明 联网显示无法连接服务器,豪横的刷刷刷 2021年最值得体验的暗黑类游戏...
  13. 精益管理研究院陈逸超 | 用精益思维创造数据价值金矿
  14. 知识对话2021《Augmenting Knowledge-grounded Conversations with Sequential Knowledge Transition》论文解读
  15. C#Winform实现手写录入签名与保存为透明png图片
  16. 搜索引擎开源代码(转)
  17. 计算机科学大师唐纳德,现代计算机科学的鼻祖
  18. Web开发未来会完全替代客户端开发吗?
  19. 动态组件_插槽_自定义指令
  20. 腾讯 2022 校招大厂薪资首发,白菜总包接近 40w!

热门文章

  1. Java volatile关键字详解
  2. 2019.7.29二维数组
  3. x64汇编第三讲,64位调用约定与函数传参.
  4. Swift开发实例:苹果Swift编程语言新手教程中文版+FlappyBird,2048游戏源代码
  5. 关键字 标识符 数据类型
  6. P1070 道路游戏
  7. 深入hibernate的三种状态
  8. 二叉查找树及其C语言实现
  9. 使用RegularExpressionValidator验证(转)
  10. 哈夫曼树编码和译码c语言,C++哈夫曼树编码和译码的实现