Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19699165
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: LINUX

2008-12-15 09:53:33

子窗口

       子窗口的创建和删除:

#include

WINDOW *subwin(WINDOW *parent, int num_of_lines, int num_of_cols,

int start_y, int start_x);

int delwin(WINDOW *window_to_delete);

 

         子窗口和新窗口的区别:子窗口不存储屏幕字符集,而是共享父窗口的,所以子窗口实际上改变了父窗口的屏幕,子窗口清除后,屏幕依旧没有变化。

         子窗口一般用于滚动。

         刷新屏幕前,父窗口必须调用touchwin

 

实例:

# cat subscl.c

/*  First, the initial code section. The base window display is initialized with some text.  */

 

#include

#include

#include

 

int main()

{

    WINDOW *sub_window_ptr;

    int x_loop;

    int y_loop;

    int counter;

    char a_letter = '1';

 

    initscr();

 

    for (y_loop = 0; y_loop < LINES - 1; y_loop++) {

        for (x_loop = 0; x_loop < COLS - 1; x_loop++) {

            mvwaddch(stdscr, y_loop, x_loop, a_letter);

            a_letter++;

            if (a_letter > '9') a_letter = '1';

        }

    }

 

 

/*  We now create the new scrolling subwindow

    and, as advised, we must 'touch' the parent window before refreshing the screen.  */

 

    sub_window_ptr = subwin(stdscr, 10, 20, 10, 10);

    scrollok(sub_window_ptr, 1);

 

    touchwin(stdscr);

    refresh();

    sleep(1);

 

/*  Then we erase the contents of the subwindow, print text to it and refresh it.

    The scrolling text is achieved by a loop.  */

 

    werase(sub_window_ptr);

    mvwprintw(sub_window_ptr, 2, 0, "%s", "This window will now scroll");

    wrefresh(sub_window_ptr);

    sleep(1);

 

    for (counter = 1; counter < 10; counter++) {

        wprintw(sub_window_ptr, "%s", "This text is both wrapping and \

                    scrolling.");

        wrefresh(sub_window_ptr);

        sleep(1);

    }

 

/*  Having finished this loop, we delete the subwindow. Then we refresh the base screen.  */

 

    delwin(sub_window_ptr);

 

    touchwin(stdscr);

    refresh();

    sleep(1);

 

    endwin();

    exit(EXIT_SUCCESS);

}

 

 

阅读(4453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~