曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6197|回复: 1
打印 上一主题 下一主题

curses 相关函数 --- scroll 和 scrollok

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-3-22 22:25:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为屏幕默认情况下是不滚屏的,要想屏幕滚屏,就需要先用 scrollok 函数来进行设置,然后再用 scroll 来滚屏。以下为测试代码:
#include <curses.h>
#include <stdlib.h>

int main()
{
        int x_loop;
        int y_loop;
        int scroll_line;
        char a_letter = 'a';

        initscr();

        for(y_loop = 0; y_loop < 10; y_loop++) {
                for(x_loop = 0; x_loop <10; x_loop ++) {
                        mvwaddch(stdscr, y_loop, x_loop, a_letter);
                        a_letter++;
                        if(a_letter > 'z') a_letter = 'a';
                }
        }
        refresh();
        sleep(3);

        scrollok(stdscr, 1);    /*注意要先进行设置*/

        for( scroll_line = 0; scroll_line < 5; scroll_line++) {
                scroll(stdscr);
                touchwin(stdscr);
                wrefresh(stdscr);
                sleep(1);
        }

        endwin();
        exit(EXIT_SUCCESS);
}

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
沙发
 楼主| 发表于 2009-3-22 22:49:15 | 只看该作者

测试-2

测试代码2
#include <curses.h>
#include <stdlib.h>

int main()
{
        WINDOW *win_ptr;
        int x_loop;
        int y_loop;
        int scroll_line;
        char a_letter = 'a';

        initscr();

        for(y_loop = 0; y_loop < LINES - 1; y_loop++) {
                for(x_loop = 0; x_loop < COLS; x_loop ++) {
                        mvwaddch(stdscr, y_loop, x_loop, a_letter);
                        a_letter++;
                        if(a_letter > 'z') a_letter = 'a';
                }
        }
        refresh();
        sleep(3);

        win_ptr = newwin(10, 10, 10, 10);
        //box(win_ptr, '|', '-');
        mvwprintw(win_ptr, 5, 5, "%s", "test");
        wrefresh(win_ptr);
        sleep(3);

        scrollok(win_ptr, 1);

        for( scroll_line = 0; scroll_line < 5; scroll_line++) {
                scroll(win_ptr);
                //touchwin(win_ptr);
                wrefresh(win_ptr);
                sleep(1);
        }

        delwin(win_ptr);  /*删除窗口*/
        endwin();
        exit(EXIT_SUCCESS);
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 23:22 , Processed in 0.068236 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表