我是靠谱客的博主 精明白开水,最近开发中收集的这篇文章主要介绍ncurses屏幕操作:getyx(),getparyx(),getmaxyx(),scr_dump(),scr_restore(),getwin(),putwin()屏幕操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 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()屏幕操作的全部内容,希望文章能够帮你解决ncurses屏幕操作:getyx(),getparyx(),getmaxyx(),scr_dump(),scr_restore(),getwin(),putwin()屏幕操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部