⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实例11-10.c

📁 Linux下C语言编程例子
💻 C
字号:
#include<curses.h>
#include<menu.h>
#include<stdlib.h>
#include<ctype.h>
static 
  const *months[] 
{"January","Febrary","March","April","May","June","July","August","september","October" 
,"November","December",NULL};
#define N_ITEMS sizeof(months)/sizeof(months[0])
int main(int argc,char *argv[])
   {
     int i;
     int ch;
     int mrows,mcols;
     WINDOW *win,*subwin;
     ITEM *items[N_ITEMS];
     MENU *mymenu;
     if(initscr()==NULL) {  /*初始化*/
       perror("initcurs");
       exit(EXIT_FAILURE);
     }
     cbreak();
     noecho();
     keypad(stdscr,TRUE);
     for(i=0;i< N_ITEMS;i++) {/*建立菜单项*/
       items[i]=new_item(months[i]," ");
     }
     mymenu=new_menu(items);/*建立菜单*/
     set_menu_format(mymenu,5,1);/*设置为5行单列的菜单*/
     set_menu_mark(mymenu,"*");
     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 chose:%s\n",
      item_name(current_item(mymenu)));
      refresh();
      unpost_menu(mymenu);
      getch();
      free_menu(mymenu);
      for(i=0;i< N_ITEMS;i++) 
         free_item(items[i]);
      endwin();
      exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -