zoukankan      html  css  js  c++  java
  • 使用curses管理基于文本的屏幕--(七)


    填充

    当我们编写更为高级的curses程序时,我们会发现有时我们可以很容易的构建一个逻辑屏幕,然后将这个逻辑屏幕中的所有或是部分内容输出到物理屏幕上。有时,我们会得到一个比实际的物理屏幕要大的逻辑屏幕,并且每次只显示逻辑屏幕的部分内容。

    就目前而言,使用curses函数来实现这样的功能对于我们并不是十分容易,因为所有的窗体必须不大于物理屏幕。curses确实提供了一个特殊的数据结构,pad,来操作并不适合普通窗体的逻辑屏幕信息。

    pad结构与WINDOW结构相类似,而所有可以用于向窗体输出的函数也可以用于pad。然而,pad确实具有其特殊的创建与刷新例程。

    我们使用与创建普通窗体相类似的方法来创建pad:

    #include <curses.h>
    WINDOW *newpad(int number_of_lines, int number_of_columns);

    在这里我们可以注意到其返回为一个指向WINDOW结构的指针,与newwin函数相同。删除pad使用delwin函数,与窗体相同。

    pad确实具有不同的刷新例程。因为pad并没有限定一个特定的屏幕位置,我们必须指定我们希望pad出现在屏幕上的区域。我们可以使用下面的prefresh函数来做到:

    #include <curses.h>
    int prefresh(WINDOW *pad_ptr, int pad_row, int pad_column,
                 int screen_row_min, int screen_col_min,
                 int screen_row_max, int screen_col_max);

    这会创建一个pad区域,由(pad_row,pad_column)开始,其所定义的区域为(screen_row_min,screen_col_min)到(screen_row_max,screen_col_max)。

    curses还提供了另外一个函数,pnoutrefresh。其他用与wnoutrefresh相类似,不过却有更为高效的屏幕更新。

    下面我们来看一个简单的程序,pad.c。

    试验--使用pad

    1 在程序的开始处,我们初始化pad结构,然后创建一个pad,这会返回一个指向pad的指针。我们添加字符来填充pad结构。

    #include <unistd.h>
    #include <stdlib.h>
    #include <curses.h>
    int main()
    {
        WINDOW *pad_ptr;
        int x, y;
        int pad_lines;
    int pad_cols;
    char disp_char;
    initscr();
    pad_lines = LINES + 50;
    pad_cols = COLS + 50;
    pad_ptr = newpad(pad_lines, pad_cols);
    disp_char = ‘a’;
    for (x = 0; x < pad_lines; x++) {
        for (y = 0; y < pad_cols; y++) {
            mvwaddch(pad_ptr, x, y, disp_char);
            if (disp_char == ‘z’) disp_char = ‘a’;
            else disp_char++;
        }
    }

    2 我们现在可以在退出之前在屏幕上的不同位置绘制出一个不同的pad区域。

      prefresh(pad_ptr, 5, 7, 2, 2, 9, 9);
      sleep(1);
      prefresh(pad_ptr, LINES + 5, COLS + 7, 5, 5, 21, 19);
      sleep(1);
      delwin(pad_ptr);
      endwin();
      exit(EXIT_SUCCESS);
    }

  • 相关阅读:
    中高级PHP程序员应该掌握哪些技术
    如何在FOXMAIL添加网易邮箱
    subline text 3快捷键
    【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式
    PHPStorm常用快捷键
    怎么样快速修改HOSTS文件?让火绒等小工具来帮忙
    windows系统 右键新建菜单添加新建php文件
    给初学编程的人的干货
    安装Adobe Dreamweaver CC时出现安装失败及解决方法
    win10系统每次打开软件都会弹出账户控制如何解决
  • 原文地址:https://www.cnblogs.com/dyllove98/p/2461979.html
Copyright © 2011-2022 走看看