C指针原理教程之Ncurses介绍分享!

dp@dp:~/cursestest % cat 2.c

  #include <ncurses.h>     #include <locale.h>     int main(void){       int y,x,i,j,h,w;      setlocale(LC_ALL,"");       WINDOW *pad;       initscr();//初始化             getmaxyx(stdscr,h,w);//获得屏幕尺寸       //画背景      for(i=0;i<h;i++){         for(j=0;j<w;j++){           mvaddch(i,j,ACS_CKBOARD);         }      }      refresh();            //建立窗口      pad=newpad(80,90);    for (i=0;i<80;i++){        char line[90];        sprintf(line,"line %dn",i);        mvwprintw(pad,i,1,line);      }      refresh();      prefresh(pad,0,1,5,10,20,25);//刷新pad。0,1 为基垫需要显示区域的左上角置(行列对,以下同此)。5,10,20,45为屏幕显示区域的左上角和右下角位置           for(i=0;i<65;i++){        prefresh(pad,i+1,1,5,10,20,25);//刷新pad,实现流屏;        usleep(30000);       }      getch();//等待按键      delwin(pad);       endwin();//结束       return 0;      }    

dp@dp:~/cursestest % gcc -lncursesw 2.c -o mytest

dp@dp:~/cursestest % ./mytest

7、在窗口中移动光标

dp@dp:~/cursestest % cat 2.c

  #include <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,"myhaspl@myhaspl.com");       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("myhaspl@myhaspl.com");       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;      }     

编译后运行

dp@dp:~/cursestest % gcc -lncursesw 2.c -o mytest

dp@dp:~/cursestest % ./mytest

8、菜单

dp@dp:~/cursestest % cat 2.c

  #include <locale.h>    #include <menu.h>     #include <stdio.h>    #include <ctype.h>    //定义菜单项    static const char *menus[]={      "1-1","1-2","1-3","2-1","2-2","2-3"    };    #define CITEM sizeof(menus)/sizeof(menus[0])//菜单项数    ITEM *items[CITEM];    int main(int argc,char *argv[]){      int i;      int ch;      int mrows,mcols;      WINDOW *win,*subwin;      MENU *mymenu;            //初始化屏幕      initscr();      //不用等待回车键      cbreak();      //不回显      noecho();      //可以处理功能键       keypad(stdscr,TRUE);             //建立菜单项      for(i=0;i<CITEM;i++){        items[i]=new_item(menus[i],menus[i]);//第二个参数为菜单项的描述      }       //建立菜单      mymenu=new_menu(items);      set_menu_format(mymenu,CITEM,1);  //设置CITEM行1列的菜单      set_menu_mark(mymenu,">");//菜单选中的MARK      //获得菜单的行列数      scale_menu(mymenu,&mrows,&mcols);      //建立窗口和子窗口      win=newwin(mrows+2,mcols+2,3,30);      keypad(win,TRUE);      box(win,0,0);      subwin=derwin(win,0,0,1,1);      //设置菜单的窗口      set_menu_sub(mymenu,subwin);        //在子窗口上放置菜单      post_menu(mymenu);            refresh();      wrefresh(win);      //获得输入,并移动选择到相应的菜单项       while(toupper(ch=wgetch(win))!='n'){         if(ch==KEY_DOWN)           menu_driver(mymenu,REQ_DOWN_ITEM);//移动菜单选择         else if(ch==KEY_RIGHT)           menu_driver(mymenu,REQ_RIGHT_ITEM);         else if (ch==KEY_UP)           menu_driver(mymenu,REQ_UP_ITEM);          else if (ch==KEY_LEFT)           menu_driver(mymenu,REQ_LEFT_ITEM);      }      //输出当前项      mvprintw(LINES-2,0,"you select the item :%sn",item_name(current_item(mymenu)));      refresh();      unpost_menu(mymenu);      getch();      //释放内存      free_menu(mymenu);      for(i=0;i<CITEM;i++) free_item(items[i]);      endwin();      return 1;    }    

编译并运行

dp@dp:~/cursestest % gcc -lncursesw -lmenu 2.c -o mytest

dp@dp:~/cursestest % ./mytest

—-想了解C指针原理教程之Ncurses介绍分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/482785.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐