linux-curses-窗口移动光标

本文介绍了一个使用NCurses库创建和管理多个窗口的示例程序。通过此示例,读者可以了解如何初始化屏幕、创建不同大小和位置的窗口、绘制边框、移动光标、刷新窗口以及获取键盘输入等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

#include <ncursesw/ncurses.h> 
#include <locale.h> 

int main(void){ 

//init_pair(short index,short foreground,short background)初始化颜色索引 

//attron(COLOR_PAIR(索引号)|属性) 

//newwin建立窗口,derwin建立窗口的子窗口(相对于父窗口相对位置),subwin建立窗口的子窗口(相对于根窗口绝对位置) 
    int x,y;

    setlocale(LC_ALL,""); 

    WINDOW *win1,*win2,*subwin; 

    initscr();//初始化 

    win1=newwin(15,50,1,1);//新窗口(行,列,begin_y,begin_x) 

    box(win1,ACS_VLINE,ACS_HLINE); 

    mvwprintw(win1,1,1,"WIN1"); 

    mvwprintw(win1,2,1,"www.deepfuturesoft.info/myblog/"); 



    win2=newwin(10,40,10,30);//新窗口(行,列,begin_y,begin_x) 

    box(win2,ACS_VLINE,ACS_HLINE); 
    wmove(win2,1,1);//移动某窗口的光标
    printw("WIN2");
    wmove(win2,2,1);//移动某窗口的光标。(窗口,y,x)
    printw("www.deepfuturesoft.info"); 



    subwin=derwin(win2,3,20,4,5); //子窗口 

    box(subwin,ACS_VLINE,ACS_HLINE); 
    mvwprintw(subwin,1,5,"按任意键退出");//(窗口,y,x,字符串) 
       


    refresh();//刷新整个大窗口stdscr 

    wrefresh(win1); 

    wrefresh(win2); 
    
    move(5,60);//在stdscr移动光标
    printw("hello.........");

    touchwin(win1);//转换当前窗口为win1 

    wrefresh(win1); 

    getch();//win1显示完,等待按键显示win2 


    touchwin(win2);//转换当前窗口为win2  

    //使用doupdate,可以事先定义要刷新的部分,然后刷新 

    wnoutrefresh(win2);   

    wnoutrefresh(subwin); 

    doupdate(); 
    getyx(subwin,y,x);//获得当前逻辑光标位置
    mvwprintw(subwin,y+1,x,"................");//在“按任意键退出"下一行输出"..............."

    getch();//等待按键 



    delwin(win1); 

    delwin(subwin); 

    delwin(win2); 

    endwin();//结束 

    return 0;    

} 
 



 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值