Ncurses入门-(二)游标与窗口

Ncurses入门-(二)游标控制与窗口

游标控制

在curses中我们使用move(y,x);来移动游标位置
例如以下程序:

#include <bits/stdc++.h>
#include <ncurses.h>

int main(){

    initscr();

    int x,y;
    x = y = 10;

    move(y,x);
    printw("Hello World!");
    
    getch();
    endwin();

    return 0;
}

编译完成后将看到如下效果(编译别忘了加上-lncurses参数):

在效果图中,我们可以看到当前游标位置在Hello World!语句之后,这证明游标会跟随打印位置变化

当然,我们也可以使用getyx(win,y,x);来获取当前游标的位置,例如

int y,x;
getyx(stdscr,y,x);
printw("y:%d--x:%d",y,x);

请注意,我们将得到y,x而不是&y,&x

或者使用mvprintw(y,x,str,....);函数来直接在传入位置打印字符,这相当于 move(y,x);printw(str);

窗口

创建窗口

我们使用以下代码来创建一个窗口并且生成一个填充窗口的边框(box):

#include <bits/stdc++.h>
#include <ncurses.h>

int main(){

    initscr();

    int height,width,start_y,start_x;
    height = width = 10;
    start_y = start_x = 5;

    WINDOW* win = newwin(height,width,start_y,start_x);

    refresh();

    box(win,0,0);
    wrefresh(win);

    getch();
    endwin();

    return 0;
}

我们将得到如下效果:

WINDOW* win = newwin(height,width,start_y,start_x);
请注意,我们的窗口是一个指针变量并需要用newwin()函数来创建窗口对象,函数里的参数都是不可少的
我们可以使用delwin(win);函数来销毁窗口


到这里我们就完成了本章的全部内容,关于窗口的操作内容笔者将在未来的某个时间撰写
posted @ 2021-05-30 10:27  Evan_Lai  阅读(666)  评论(0编辑  收藏  举报